lambda-service
Version:
38 lines (33 loc) • 770 B
JavaScript
import chokidar from 'chokidar'
import { join, isAbsolute } from 'path'
// 按 key 存,值为数组
const watchers = {}
function toAbsolute(p) {
if (isAbsolute(p)) {
return p
}
return join(process.cwd(), p)
}
export function watch(key, files) {
if (process.env.WATCH_FILES === 'none') return
if (!watchers[key]) {
watchers[key] = []
}
const { APP_ROOT } = process.env
const watcher = chokidar.watch(files, {
ignoreInitial: true,
cwd: APP_ROOT ? toAbsolute(APP_ROOT) : process.cwd()
})
watchers[key].push(watcher)
return watcher
}
export function unwatch(key) {
if (!key) {
return Object.keys(watchers).forEach(unwatch)
}
if (watchers[key]) {
watchers[key].forEach(watcher => {
watcher.close()
})
}
}