bob
v5.0.1
Published
Convention-based build tool for node.js projects.
Maintainers
Readme
![]()
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 bobProject 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 coverageRun Bob in robot mode: (generate machine-parsable output when possible)
BOB_MODE=robot bob clean lint test coverageRun Bob quietly: (only lists tasks, without each task's output)
bob --quiet clean lint test coverageTasks
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 | - | | coverage | Check code coverage | c8 | - | | dep | Install dependencies specified in package.json | npm | - | | depgraph | Generate module dependencies graph | madge | - | | doc | Generate code documentation | jsdoc | - | | lint | Lint *.js files in lib/ and test/ directories | eslint | - | | package | Create an artifact file in .bob/artifact/ directory | tar.gz | - | | publish | Publish artifact file to a repository | npm | - | | rmdep | Remove node_modules directory. | rimraf | - | | site | Generate web site. | ae86 | buildbranch | | style | Style the code | prettier | - | | test | Execute unit test files in test/ directory | mocha | npm | | test-acceptance | Execute acceptance test files in test-acceptance/ directory | mocha | cucumber | | test-integration | Execute integration test files in test-integration/ directory | mocha | cmdt | | updep | Upgrade all dependencies to latest version | 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
GitHub Workflow
Configure Bob in GitHub workflow YAML file:
jobs:
build:
steps:
- run: npm install -g bob
- run: bob clean lint test coverageJenkins CI
Configure Bob in a Jenkins job with shell script build step:
npm install -g bob
bob clean lint test coverageColophon
Build reports:
- Code complexity report
- Unit tests report
- Test coverage report
- Integration tests report
- API Documentation
Videos:
- Evolution of bob (Gource Vizualisation) by Landon Wilkins
