Minimalist-omakase build tool for node.js projects
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
conf Replace gh-pages-cli site tool with buildbranch. Jun 21, 2015
.gitignore Initial v0.5.x refactoring. Aug 22, 2012
.npmignore Update ignore list. Aug 28, 2013
.travis.yml Update Travis config to latest. Move Coveralls submission to after_su… Aug 19, 2016


Build Status Dependencies Status Coverage Status Published Version
npm Badge


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.


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


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


In alphabetical order.

Task Description Default Type Alternative Type(s)
clean Delete .bob directory rimraf -
complexity Run code complexity checker against *.js files in lib/ directory plato jscheckstyle
coverage Check code coverage mocha-istanbul buster-istanbul
dep Install dependencies specified in package.json npm -
depgraph Generate module dependencies graph madge -
doc Generate code documentation dox-foundation -
lint Lint *.js files in lib/ and test/ directories jshint nodelint
nuke TODO Kill all processes with command containing the string 'node' - -
package Create an artifact file in .bob/artifact/ directory tar.gz -
publish Publish artifact file to a repository npm -
restart Restart application npm -
rmdep Remove node_modules directory. rimraf -
send TODO Send artifact file to a remote server. scp sendman
site Generate web site. ae86 buildbranch
start Start application npm -
status Status application npm -
stop Stop application npm -
test Execute unit test files in test/ directory mocha buster, nodeunit, vows
test-acceptance Execute acceptance test files in test-acceptance/ directory mocha cucumber
test-integration Execute integration test files in test-integration/ directory mocha buster, cmdt
test-performance Execute performance test files in test-performance/ directory mocha -
updep Upgrade all dependencies to latest version pkjutil -
versionup Upgrade patch version number in package.json file pkjutil -


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

Travis CI

Configure Bob in .travis.yml file:

before_install: "npm install -g bob"
script: "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


Developer's Guide

Build reports: