npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

node-watch-changes

v2.0.3

Published

Run user defined commands on file changes.

Downloads

3,731

Readme

Node Watcher

Run user defined commands on file changes.

Installation

npm install node-watch-changes
npm install -g node-watch-changes

Usage

Create a configuration file in the fashion of the following example.

// 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.

Locally installed

Require and use it.

var watcher = require('node-watch-changes');

watcher(); // The module uses watcherConfig.js
watcher('myConfig.js'); // The module uses myConfig.js

Globally installed

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.