egg-watcher
File watcher plugin for egg
Usage
In worker process:
app.watcher.watch(path, listener)
Start watching file(s).
- path(String|Array): file path(s)
- listener(Function): file change callback
app.watcher.unwatch(path[, listener])
Stop watching file(s).
- path(String|Array): file path(s)
- listener(Function): file change callback
In agent process:
agent.watcher.watch(path, listener)
Start watching file(s).
- path(String|Array): file path(s)
- listener(Function): file change callback
agent.watcher.unwatch(path[, listener])
Stop watching file(s).
- path(String|Array): file path(s)
- listener(Function): file change callback
Watching mode
development
Mode
There's a built-in development mode which works in local(env is local
). Once files on disk is modified it will emit a change
event immediately.
Customize Watching Mode
Say we want to build a custom event source plugin (package name: egg-watcher-custom
, eggPlugin.name: watcherCustom
).
Firstly define our custom event source like this:
// {plugin_root}/lib/custom_event_source.jsconst Base = ; // `opts` comes from app.config[${eventSourceName}] // `eventSourceName` will be registered later in // `config.watcher.eventSources` as the key shown below { superopts; this; } { // replace this with your desired way of watching, // when aware of any change, emit a `change` event // with an info object containing `path` property // specifying the changed directory or file. this_h = ; } { // replace this with your implementation if this_h ; } moduleexports = CustomEventSource;
Event source implementations varies according to your running environment. When working with vagrant, docker, samba or such other non-standard way of development, you should use a different watch API specific to what you are working with.
Then add your custom event source to config:
// config.default.jsexportswatcher = eventSources: custom: ;
Choose to use your custom watching mode in your desired env.
// config.${env}.jsexportswatcher = type: 'custom'; // this will pass to your CustomEventSource constructor as optsexportswatcherCustom = // foo: 'bar',;
If possible, plugins named like egg-watcher-${customName}
(egg-watcher-vagrant
eg.) are recommended.
Questions & Suggestions
Please open an issue here.