Need help with watchlist?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

lukeed
207 Stars 9 Forks MIT License 35 Commits 3 Opened issues

Description

Recursively watch a list of directories & run a command on any file system changes

Services available

!
?

Need anything else?

Contributors list

# 5,472
CSS
vercel
argv
Crystal
30 commits
# 236,415
cssnext
C++
Vim
Neovim
4 commits
# 1,714
minific...
svgo
coffees...
mjml
1 commit
watchlist
Recursively watch a list of directories & run a command on any file system changes

Features

  • Extremely lightweight
  • Simple
    fs.watch
    wrapper
  • Runs on macOS, Linux, and Windows
  • Recursively monitors all subdirectories
  • Optional ignore patterns

While

fs.watch
has its inconsistencies, efforts are made to normalize behavior across platforms.

Install

$ npm install --save-dev watchlist

Usage

CLI

# Run `npm test` on changes within "src" and "test" contents change
$ watchlist src test -- npm test

Run npm test on changes within "packages", ignoring /fixtures/i

$ watchlist packages --ignore fixtures -- npm test

Run lint script on ANY change

$ watchlist -- npm run lint

API

import { watch } from 'watchlist';

async function task() { console.log('~> something updated!'); await execute_example(); // linter, tests, build, etc }

// Run task() when "{src,test}/*/" changes // Must also ignore changes to any /fixture/i match await watch(['src', 'test'], task, { ignore: 'fixtures' });

CLI

The

watchlist
binary expects the following usage:
$ watchlist [...directory] [options] -- 

Important: The

--
is required! It separates your
command
from your
watchlist
arguments.

Please run

watchlist --help
for additional information.

API

watch(dirs: string[], handler: Function, options?: Options)

Returns:

Promise

Watch a list of directories recursively, calling

handler
whenever their contents are modified.

dirs

Type:

Array

The list of directories to watch.

May be relative or absolute paths.
All paths are resolved from the

opts.cwd
location.

handler

Type:

Function

The callback function to run.

Note: This may be a Promise/

async
function. Return values are ignored.

options.cwd

Type:

String

Default:
.

The current working directory. All paths are resolved from this location.
Defaults to

process.cwd()
.

options.ignore

Type:

String
or
RegExp
or
Array

A list of patterns that should not be watched nor should trigger a

handler
execution.
Ignore patterns are applied to file and directory paths alike.

Note: Any

String
values will be converted into a
RegExp
automatically.

options.clear

Type:

Boolean

Default:
false

Whether or not the

console
should be cleared before re-running your
handler
function.

Note: Defaults to

true
for the CLI! Pass
--no-clear
to disable.

options.eager

Type:

Boolean

Default:
false

When enabled, runs the

command
one time, after
watchlist
has initialized. When disabled, a change within the
dirs
list must be observed before the first
command
execution.

run(command: string, ...args)

Returns:

Promise

All arguments to

watchlist.run
are passed to
child_process.exec
directly.

Note: Any

stdout
or
stderr
content will be piped/forwarded to your console.

command

Type:

String

The command string to execute.
View

child_process.exec
for more information.

args

Type:

String

Additional

child_process.exec
arguments.

Important: The

callback
argument is not available!

License

MIT © Luke Edwards

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.