mechanism
v0.0.14
Published
Minimalistic build system
Downloads
11
Readme
Mechanism
A minimalistic build system that operates files and tasks. It constructs a graph of build dependencies, marks nodes to be rebuilt, and executes the graph concurrently.
Usage
var Mechanism = require('mechanism');
var msm = new Mechanism();
var concat = require('mechanism-concat');
var concat10 = concat({ delimiter: '\n' });
var closure = require('mechanism-closure-compiler');
var imagemin = require('mechanism-imagemin');
var paths = {
scripts: ['client/js/**/*.js', '!client/external/**/*.js'],
images: 'client/img/**/*'
};
var outs = {
scripts: {
concat: 'temp/scripts.concat',
closure: 'temp/scripts.closure'
}
};
msm.operate(
// out of files
paths.scripts,
// make file
outs.scripts.concat,
// using plugin
concat10
);
msm.operate(
outs.scripts.concat,
outs.scripts.closure,
closure({
compilerPath: "../path/to/compiler.jar",
compilerFlags: {
compilation_level: "ADVANCED_OPTIMIZATIONS"
}
})
);
msm.on("finish", function() {
console.log("finish");
});
msm.on("error", function(error) {
console.log(error);
});
msm.start();
Intermediate Files
You are supposed to name intermediate files instead
of naming tasks. One operate
task is described
by it's source
and target
files. Tasks connect
each other using the files names.
Chaining operations
You can use targets
from previous operation
as sources
in next operation. Use operate
again.
msm.operate(
paths.scripts,
outs.scripts.concat,
concat10
).operate(
outs.scripts.closure,
closure({
compilerPath: "../path/to/compiler.jar",
compilerFlags: {
compilation_level: "ADVANCED_OPTIMIZATIONS"
}
})
);
Build API
Plugin API
Incremental Builds
Just rerun start()
periodically. Mechanism calculates
what files are on-disk files (excluding intermediate
files), and handles it's own cache of on-disk files
and their state.