Bob

April 15, 2026 ยท View on GitHub

Avatar

Build Status Dependencies Status Coverage Status Published Version

Bob

Convention-based build tool for node.js projects.

Bob provides a set of build-related tasks that work cross-platform and simple to use by following a few convention.

It works with zero configuration and allows minimal customisation when you don't want to use the default type of a particular task.

It only installs the default tools, while alternative tools will be lazy-installed as required.

It doesn't have plugins. It uses various CLI tools and configure their usage in task configuration files.

Installation

npm install -g bob

Project Convention

A project must have:

  • package.json file, with at least name and version info
  • lib/ directory, where you put your source code
  • test/ directory, where you put your test code

Usage

Run Bob: (from your project directory, where package.json is located)

bob clean lint test coverage

Run Bob in robot mode: (generate machine-parsable output when possible)

BOB_MODE=robot bob clean lint test coverage

Run Bob quietly: (only lists tasks, without each task's output)

bob --quiet clean lint test coverage

Tasks

In alphabetical order.

TaskDescriptionDefault TypeAlternative Type(s)
cleanDelete .bob directoryrimraf-
complexityRun code complexity checker against *.js files in lib/ directoryplato-
coverageCheck code coveragec8-
depInstall dependencies specified in package.jsonnpm-
depgraphGenerate module dependencies graphmadge-
docGenerate code documentationjsdoc-
lintLint *.js files in lib/ and test/ directorieseslint-
packageCreate an artifact file in .bob/artifact/ directorytar.gz-
publishPublish artifact file to a repositorynpm-
rmdepRemove node_modules directory.rimraf-
siteGenerate web site.ae86buildbranch
styleStyle the codeprettier-
testExecute unit test files in test/ directorymochanpm
test-acceptanceExecute acceptance test files in test-acceptance/ directorymochacucumber
test-integrationExecute integration test files in test-integration/ directorymochacmdt
updepUpgrade all dependencies to latest versionpkjutil-

Config

To customise Bob for your project, create a .bob.json file in your project directory, where package.json is located.

To use nodelint instead of default jshint when running bob lint:

{
  "lint": {
    "type": "nodelint"
  }
}

To add an alias task (called build) which executes clean lint test coverage tasks:

{
  "build": "clean lint test coverage"
}

Continuous Integration

GitHub Workflow

Configure Bob in GitHub workflow YAML file:

jobs:
  build:
    steps:
      - run: npm install -g bob
      - run: bob clean lint test coverage

Jenkins CI

Configure Bob in a Jenkins job with shell script build step:

npm install -g bob
bob clean lint test coverage

Colophon

Developer's Guide

Build reports:

Videos: