Via package.json, configure glob patterns to watch and invoke an npm run script on change.
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
.editorconfig
.gitignore
.travis.yml
changelog.md
index.js
license
package.json
readme.md
test.js

readme.md

rerun-script

Build Status NPM version NPM downloads LICENSE js-standard-style

Invoke npm scripts upon file changes. Configure via package.json using glob patterns.

$ npm install rerun-script --save-dev

usage

Usage: rerun-script [options]

Options:

  -a, --automatic              run tests automatically
  -h, --help                   output usage information
  -V, --version                output the version number
  -d, --directory [directory]  package directory

configure package.json

  • NOTE 1: While the examples below use the standard lint checker, you are free to use any lint checker you like.
  • NOTE 2: The watch script in package.json is optional and is only necessary if you plan to invoke rerun-script via npm run. You can use any script name you like.

package.json

compact (recommended) format:
{
    "scripts": {
        "test": "node test.js",
        "lint": "standard",
        "watch": "rerun-script"
    },

    "watches": {
        "test": [ "*.js", "lib/**/*.js", "test/**/*.js" ],
        "lint": [ "*.js", "lib/**/*.js", "test/**/*.js" ]
    }
}
verbose format:
{
    "scripts": {
        "test": "node test.js",
        "lint": "standard",
        "watch": "rerun-script"
    },

    "watches": [
        {
            "script": "test",
            "patterns": [ "*.js", "lib/**/*.js", "test/**/*.js" ]
        },
        {
            "script": "lint",
            "patterns": [ "*.js", "lib/**/*.js", "test/**/*.js" ]
        }
    ]
}

If you only have one pattern to match for a script, you can pass in a string instead of an array:

{
    "scripts": {
        "test": "node test.js",
        "lint": "standard",
        "watch": "rerun-script"
    },

    "watches": {
        "test": "test/**/*.js",
        "lint": "*.js"
    }
}

start the watcher

# directly
$ ./node_modules/.bin/rerun-script

# or via `npm run watch`
$ npm run watch

screenshot

License

MIT