react-cosmos
Version:
Sandbox for developing and testing UI components in isolation
21 lines (20 loc) • 758 B
JavaScript
import { watch } from 'chokidar';
import { debounce } from 'lodash-es';
import { getDecoratorPatterns, getFixturePatterns } from './shared.js';
const DEBOUNCE_INTERVAL = 50;
export async function startFixtureWatcher(config, event, callback) {
const { fixturesDir, fixtureFileSuffix, ignore } = config;
const FILE_PATTERNS = [
...getFixturePatterns(fixturesDir, fixtureFileSuffix),
...getDecoratorPatterns(),
];
return new Promise(resolve => {
const watcher = watch(FILE_PATTERNS, {
ignored: ignore,
ignoreInitial: true,
cwd: config.rootDir,
})
.on('ready', () => resolve(watcher))
.on(event, debounce(() => callback(), DEBOUNCE_INTERVAL));
});
}