typhonjs-npm-scripts-runner
v0.4.0
Published
Provides an NPM module and script which will load a JSON file searching for an Array entry then executes the scripts.
Downloads
36
Maintainers
Readme
Provides an NPM module and script which will load a JSON file searching for an Array entry then executes commands by child_process->execSync
.
For a comprehensive ES6 build / testing / publishing NPM module please see typhonjs-npm-build-test as it combines this module along with transpiling ES6 sources with Babel, pre-publish script detection, ESDoc dependencies, testing with Mocha / Istanbul and an Istanbul instrumentation hook for JSPM / SystemJS tests. For a full listing of all TyphonJS NPM script modules available please see typhonjs-node-npm-scripts organization on GitHub.
To configure the script runner provide this entry in package.json
scripts entry:
"devDependencies": {
"typhonjs-npm-scripts-runner": "^0.3.0"
},
"scripts": {
"runme": "node ./node_modules/typhonjs-npm-scripts-runner/scripts/runner.js <file path> <script entry>",
},
<file path>
must be defined relative to the root path and contain a JSON formatted object hash with entries that end with an Array
of strings
. To invoke the above example execute npm run runme
.
For example here is a JSON formatted file .scriptdata
located in the root path with muliple entries. The first copy.files.scripts
copies files the second run.npm
runs three other NPM scripts defined in package.json
:
/**
* You can provide comments in script runner data files.
*/
{
"copy":
{
"files":
{
"scripts":
[
"cp ./templates/file2.js ./destination/file2.js",
"cp ./templates/file2.js ./destination/file3.js"
]
}
},
"run":
{
"scripts": ["npm run script1", "npm run script2", "npm run script3"]
}
}
Given the above data file here are the entries in package.json
to run them:
"scripts": {
"copy": "node ./node_modules/typhonjs-npm-scripts-runner/scripts/runner.js .scriptdata copy.files.scripts '<optional custom message>'",
"runmult": "node ./node_modules/typhonjs-npm-scripts-runner/scripts/runner.js .scriptdata run.scripts '<optional custom message>'"
},
For programmatic usage see the following example; you may include a 3rd string parameter for a custom message:
var runner = require('typhonjs-npm-scripts-runner');
runner.run('.scriptdata', 'copy.files.scripts', '<optional custom message>');
Please note that you can add comments to the script JSON data file.