Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cliffano/bob
Minimalist-omakase build tool for node.js projects
https://github.com/cliffano/bob
build cli nodejs
Last synced: about 23 hours ago
JSON representation
Minimalist-omakase build tool for node.js projects
- Host: GitHub
- URL: https://github.com/cliffano/bob
- Owner: cliffano
- License: mit
- Created: 2010-12-02T13:22:39.000Z (about 14 years ago)
- Default Branch: main
- Last Pushed: 2024-09-29T06:58:50.000Z (5 months ago)
- Last Synced: 2025-02-06T20:15:44.031Z (8 days ago)
- Topics: build, cli, nodejs
- Language: JavaScript
- Homepage:
- Size: 13.9 MB
- Stars: 39
- Watchers: 5
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-github-repos - cliffano/bob - Minimalist-omakase build tool for node.js projects (JavaScript)
README
[![Build Status](https://github.com/cliffano/bob/workflows/CI/badge.svg)](https://github.com/cliffano/bob/actions?query=workflow%3ACI)
[![Security Status](https://snyk.io/test/github/cliffano/bob/badge.svg)](https://snyk.io/test/github/cliffano/bob)
[![Dependencies Status](https://img.shields.io/librariesio/release/npm/bob)](https://libraries.io/github/cliffano/bob)
[![Coverage Status](https://img.shields.io/coveralls/cliffano/bob.svg)](https://coveralls.io/r/cliffano/bob?branch=master)
[![Published Version](https://img.shields.io/npm/v/bob.svg)](http://www.npmjs.com/package/bob)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 codeUsage
-----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
jsdoc
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
-
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 coverageColophon
--------[Developer's Guide](https://cliffano.github.io/developers_guide.html#nodejs)
Build reports:
* [Code complexity report](https://cliffano.github.io/bob/complexity/plato/index.html)
* [Unit tests report](https://cliffano.github.io/bob/test/mocha.txt)
* [Test coverage report](https://cliffano.github.io/bob/coverage/c8/index.html)
* [Integration tests report](https://cliffano.github.io/bob/test-integration/cmdt.txt)
* [API Documentation](https://cliffano.github.io/bob/doc/jsdoc/index.html)Videos:
* [Evolution of bob (Gource Vizualisation)](https://www.youtube.com/watch?v=xc-qqky2a1w) by Landon Wilkins