Selectively executes commands when watched files are changed.
npm install run-when-changed
!Downloads
!Version
Selectively executes commands when watched files are changed (Nix & Win32).
```
npm install --save-dev run-when-changed
`
Usage: run-when-changed --watch
Selectively executes commands when watched files are changed.
Options:
-h, --help Output usage information
-w, --watch
-e, --exec
-m, --match [glob] Only files that match will be executed
-i, --interval [milliseconds] Interval to pass to fs.watchFile in milliseconds
-d, --debounce [milliseconds] Delay for events called in succession for the same file/event in milliseconds
-m, --mode [auto|watch|poll] Force the watch mode. Either 'auto' (default), 'watch' (force native events), or 'poll' (force stat polling)
-c, --cwd [directory] The current working directory to base file patterns from. Default is process.cwd()
--verbose Verbose mode
`
Command line accepts the following tokens:
* %filedir - Changed file directory, relative to CWD.%filename
* - Changed file name and extension.%filepath
* - Changed file directory, file name and extension relative to CWD.%s
* - Same as %filepath.%package-json-dir
* - Full path to nearest folder that contains package.json.%full-filedir
* - Full absolute changed file directory.%full-filepath
* - Full absolute changed file directory, file name and extension.
``
$ run-when-changed --watch "*/.js" --exec "ls -la %s"
$ run-when-changed --watch "*/.js" --watch "README.md" --exec "ls -la %s"
Having more than one exec passed per watch will execute multiple commands per file when there's a change event.
``
$ run-when-changed --watch "*/.js" --exec "ls -la %s" --exec "chmod +x %s"
You can watch multiple globs and execute commands specific to each glob.
`ls
$ run-when-changed \
--watch "*/.js" --exec "ls -la %s" \ # executes for *.js filesrm
--watch "*/.txt" --exec "rm %s" \ # executes for *.txt files`
`lsexecutes
for *-test.js files`
$ run-when-changed --watch "*/.js" --filter "*-test.js" --exec "ls -la %s"
This command will execute mocha test runner for all tests/*/-test.js files.
``
$ run-when-changed \
--watch "tests/*/-test.js" \
--exec "mocha --require babel-register %s" \
--verbose
Install locally (npm install --save-dev run-when-changed) then add the following to your package.json
You can use npm run dev command to start a file watcher that will execute the test file you are working on without having to add .only.
`js`
{
"scripts": {
"dev": "run-when-changed --watch 'tests/*/-test.js' --exec 'mocha --require babel-register %s'"
}
}
You can use npm run dev command to start a file watcher that will execute the test file you are working on without having to add .only and compile *.js files in the root folder using Babel.js.
`js`
{
"scripts": {
"dev": "run-when-changed.js --watch 'tests/*/-test.js' --exec 'mocha --require babel-register %s' --watch '*.js' --exec 'babel %s --out-dir ./lib --source-maps'"
}
}
1. filter and exec applies only to immediately preceeding watchfilter
1. You can have as many and exec after one or many watch`
ISC