import { } from "@effectionx/watch/lib"Watch
Watch is a very simple tool that does one thing: run a command, and every time source files change in a directory, shutdown the current invocation gracefully and restart it.
npx @effectionx/watch npm start
or, under Deno:
deno run -A npm:@effectionx/watch npm start
Graceful Shutdown
Watch will send SIGINT and SIGTERM to your command, and then wait until its
stdout stream is closed, indicating that it has no further output. It will not
attempt to start your command again until that has happened. This is important,
because your process might be holding onto any number of resources that have to
be safely released before exiting.
Git aware
If you are running this command inside a git repository, it will only perform restarts on files that are under source control, or could be candidates for source control (not ignored).
Use it as an Effection library
Most of the time, you will use this as an executable. If you want to build your
own watch from within a library, the /lib export is the same machinery the
command is built on.
import { each, main } from "effection";
import { watch } from "@effectionx/watch/lib";
await main(function* () {
const changes = watch({
path: "./src",
cmd: "npm test",
});
for (let start of yield* each(changes)) {
console.log(start);
yield* each.next();
}
});
API Reference
./lib
A watch is a strema of process starts that happen in reaction to some source file changing on the file system.
Create a watch configuration that observes file system changes and executes a command when changes are detected. The watch can be consumed as a stream of process starts.
Examples
Example 1
const watcher = yield* watch({
path: './src',
cmd: 'npm test'
});
Parameters
options: WatchOptions
Configuration options for the watch
Return Type
Stream<Start, never>
A Stream that emits Result<Process> for each command execution
See
- WatchOptions for configuration options
- Process for process execution details