Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Minimalist-omakase build tool for node.js projects
JavaScript

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
bin
conf
lib
test
.gitignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
package.json

README.md

Bob http://travis-ci.org/cliffano/bob

Convention-based build tool for Node.js projects.

Installation

npm install -g bob

Project Convention

Mandatory:

  • package.json - project descriptor file
  • lib/ - directory containing JavaScript library files
  • test/ - directory containing JavaScript test files

Optional (only relevant when project is an app):

  • {name}.js - main app file, must support node {name}.js start|stop|restart|status
  • run/ - directory containing any runtime information like pid or log files

Reserved and generated by Bob:

  • build/ - directory containing build reports and artifacts

Usage

Bob can be run from the project root directory (same level as package.json file).

Install project dependencies (per Node.js project):

bob dep

Run Bob from project directory:

bob target1 target2 target3 ...

Run Bob with specific environment: (if unspecified, NODE_ENV defaults to 'development')

NODE_ENV=production bob start

Run Bob in robot mode and generate XML reports: (if unspecified, BOB_MODE defaults to 'human')

BOB_MODE=robot bob lint test

Targets

dep Install all dependencies specified in package.json file by executing npm install . .
tools Install all Bob dependencies having binary executablein the global scope.
clean Delete build/ and run/ directories, along with any nohup.* and *.log files.
lint Run jshint/node-jshint or tav/nodelint against all .js files in lib/ and test/ directories.
style Run nomiddlename/jscheckstyle against all .js files in lib/ directory.
test Run cloudhead/vows against all .js files in test/ directory.
coverage (experimental) Run visionmedia/node-jscoverage via cloudhead/vows against all .js files in test/ and lib/ directories.
doc Run nodeca/ndoc against all .js files in lib/ directory.
versionup Upgrade patch version number in package.json file.
versionup-minor Upgrade minor version number in package.json file.
versionup-major Upgrade major version number in package.json file.
template (experimental) Populate variables in template files with values from package.json file.
stop Stop the app by executing node {name}.js stop .
start Start the app by executing node {name}.js start .
restart Restart the app by executing node {name}.js restart .
status Display app status by executing node {name}.js status .
nuke Kill all processes with command containing the word 'node' .
package Create a .tar.gz package file at build/artifact/ directory, along with md5 and sha1 checksums of the package file.
package-meta (experimental) Create a meta file to build/artifact, along with md5 and sha1 checksums of the meta file.
deploy (experimental) Upload the .tar.gz package file to a remote location, either via SCP or FTP.
deploy-unpack (experimental) Deploy, then remotely unpack the .tar.gz package file via SSH.
deploy-restart (experimental) Deploy, unpack, then remotely execute node {name.js} restart .

Continuous Integration

Travis CI

Add this scripts.test to project's package.json file:

{
  "scripts": {
    "test": "npm install -g bob; bob clean lint test coverage;"
  }
}

Jenkins CI

Install Bob on the server, then configure a job with shell script build step:

bob clean lint test coverage;

Config

TODO

Colophon

Follow @cliffano on Twitter.

Something went wrong with that request. Please try again.