Auto Builder
Auto Builder is an implementation of GNU make. Instead of the configuration being found inside a makefile, it uses a javascript object which describes the dependency graph. This makes it easy to dynamically generate the configuration in your build script.
Installation
npm install auto-builder
Usage
The library itself exports a single factory function. This factory is used to create a runner
which can then be used to generate a series of targets:
const autoBuilder = ; const buildCfg = ... ; var runner = ; Promise // generate target x // generate targets z and y ;
The runner will only re-generate targets with dependencies that have modified dates later than that of the target. This prevents redundant regeneration.
Targets will be built with maximum parallelism - using the dependency graph specified by the configuration. The meat of this work is offloaded to the orchestrator
library.
Configuration
The Auto Builder configuration is an object mapping target
to: recipe
and dependencies
.
The target is the name of some file that needs to be generated. The dependencies are the names of the files required for the generation and the recipe is a function that performs the actual regeneration.
The recipe function should be a nullary function that returns a promise
which resolves upon completion. If the recipe doesn't create the target file, an empty file will be created by the library.
Heres a toy example:
// no actual *work* is done here - just collect all dependencies "dist/build" : dependencies : "dist/index.js" // compile the javascript into es7 "dist/index.js.es7" : dependencies : "index.js" // minify the compiled javascript and save it at the target location "dist/index.js" : dependencies : "dist/index.js.es7" // clear the directory. Need to add a dummy dependency as otherwise will only clean once.. "dist/clean" : dependencies : "dist/.clean" fsPromise // dummy clean dependency - ensures clean can be run multiple times "dist/.clean" :
To perform a clean and then a build, you would do:
Promise ;