node-watch-changes
Version:
Run user defined commands on file changes.
59 lines (45 loc) • 1.94 kB
Markdown
Run user defined commands on file changes.
`npm install node-watch-changes`
`npm install -g node-watch-changes`
Create a configuration file in the fashion of the following example.
```javascript
// Define the callbacks. Available are onStart, onChange and onEnd. They all get a spawn parameter, which is a promisified version of node's child_process.spawn. The onChange callback additionally gets an events object.
const onStart = (spawn) => {
console.log('Watcher is running...');
};
const onChange = async (events, spawn) => {
if (events.change) {
await spawn('npm run sass');
await spawn('rsync -aP --delete --exclude "node_modules" "./" "server:/path/to/destination"');
}
};
const onEnd = (spawn) => {
console.log('Watcher is terminating.');
};
var config = {
directory: '.', // The directory which will be watched for changes. If falsy, the parent directory of this module will be watched. Can be a string or an array of strings.
ignore: [ // ignore can be a string, regex, function or an array containing any of them. Has to be anymatch compatible, see https://github.com/es128/anymatch
/node_modules/,
/\.git/
],
delay: 400, // Delay the execution of the commands on change in ms
verbosity: 'normal', // Possible values are: minimal, normal, verbose
onStart: onStart,
onChange: onChange,
onEnd: onEnd
};
module.exports = config;
```
Name the file `.watcher-config.js` to make the module autoload it, or name it whatever you want and pass the path as an argument.
Require and use it.
```javascript
var watcher = require('node-watch-changes');
watcher(); // The module uses watcherConfig.js
watcher('myConfig.js'); // The module uses myConfig.js
```
Call it from the terminal using `watcher` to use watcherConfig.js as the configuration file or `watcher myConfig.js` to use myConfig.js as the configuration file.