Skip to content
This repository

Minimalist-omakase build tool for node.js projects

Drop 0.8 and 0.11 CI run.

Drop 0.8 due to some deps min 0.10 node engine req. Temporarily drop 0.11 due to ramp-resources sub-dep of buster fails to install.
latest commit 5b65242d2a
Cliffano Subagio authored March 18, 2014
Octocat-spinner-32 bin v0.6.x refactoring: remove Make dependency, add multi task types supp… August 31, 2013
Octocat-spinner-32 conf
Octocat-spinner-32 lib
Octocat-spinner-32 test
Octocat-spinner-32 .bob.json Add coverage target. August 28, 2013
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .jshintrc Add jshint config. August 31, 2013
Octocat-spinner-32 .npmignore Update ignore list. August 28, 2013
Octocat-spinner-32 .travis.yml Drop 0.8 and 0.11 CI run. March 18, 2014
Octocat-spinner-32 CHANGELOG.md Bump version up to v0.7.1-pre. March 18, 2014
Octocat-spinner-32 LICENSE Update license year. January 14, 2013
Octocat-spinner-32 README.md Add coverage status badge. January 13, 2014
Octocat-spinner-32 avatar.jpg
Octocat-spinner-32 package.json Bump version up to v0.7.1-pre. March 18, 2014
README.md

Avatar

Build Status Dependencies Status Coverage Status Published Version
npm Badge

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.

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 TODO Generate web site. ? ae86
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 -

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

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
Something went wrong with that request. Please try again.