Provides an NPM module and script which will load a JSON file searching for an Array entry then executes the scripts.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
scripts
src
test
.eslintignore
.eslintrc
.gitignore
.travis.yml
AUTHORS.md
CHANGELOG.md
LICENSE
README.md
package.json

README.md

typhonjs-npm-scripts-runner

NPM Code Style License Gitter

Build Status Dependency Status

Provides an NPM module and script which will require a CJS formatted .js file or treat all other files as JSON in addition to stripping any comments. Once the file is loaded an search for an array object entry occurs and if found all entries in the array are executed 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.4.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.