@sanity/ui-workshop
Version:
An environment for designing, reviewing, and quality-testing React components.
36 lines (29 loc) • 710 B
text/typescript
import chokidar from 'chokidar'
import path from 'path'
import {_Observable} from './_observable'
export interface _FileEvent {
type: 'add' | 'addDir' | 'change' | 'unlink' | 'unlinkDir'
file: string
}
export function _watchFiles(options: {
cwd: string
pattern: string | string[]
}): _Observable<_FileEvent> {
const {cwd, pattern} = options
return {
subscribe(observer) {
const watcher = chokidar.watch(pattern, {
cwd,
ignoreInitial: true,
})
watcher.on('all', (event, file) => {
observer.next({type: event, file: path.resolve(cwd, file)})
})
return {
unsubscribe() {
watcher.close()
},
}
},
}
}