Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Awesome Lists containing this project

README

        

Avatar

[![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 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
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 coverage

Colophon
--------

[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