codewatch
v0.0.1
Published
A CLI for performing actions when one or more files change
Downloads
4
Maintainers
Readme
cpwatch
A minimal utility for performing actions when something changes in the file system.
Overview
cpwatch is a CLI for running automated actions when files. It uses a Watcher-plugin architecture that supports (nay, expects!) modern ESM / JS / Typescript code.
The API is designed to accommodate the following use cases:
Full build
cpwatchdoes a sweep of the file system being monitored and passes every file / directory it finds to the correspondingWatcher. This is the basic "build all the things" mode.Watch Mode After doing a Full Build,
cpwatchcontinues monitoring the file system for changes, notifying eachWatcherof changes as needed. This is useful in local dev environments for keeping things in sync in realtime.Check Mode
cpwatchonly looks at files passed on the command line (i.e. no Full Build), and does not alter the filesystem. Instead, terminates with a non-zero exit if changes are needed. This is useful for pre-commit hooks (e.g.lefthook) to ensure files are up to date before committing changes to a repo.
Built in Watchers
cpwatch currently ships plugins that we, CodePen, have found useful in our build environment:
- AssetsWatcher: For ~~copying~~ hard-linking images, stylesheets, and other non-code assets between Typescript's "src" and "dist" directories
- TypescriptCleanupWatcher: For cleaning up vestigial artifacts that get left behind when renaming JS/TSX files
- ScriptIndexWatcher: For auto-generating hierarchical index.js files
- StaticFileWatcher: For copying and building static assets
Configuration
Configuration is done in-code, typically in a codewatch.config.ts file. Examples forthcoming
Custom Watcher plugins
Plugin API documentation forthcoming.
