@roots/bud-api
Version:
bud.js core module
33 lines (32 loc) • 919 B
JavaScript
import isString from '@roots/bud-support/isString';
export const watch = async function (...params) {
if (!this.isDevelopment)
return this;
const [files, options] = makeFilesAndOptions(...params);
this.hooks.on(`dev.watch.files`, (watchlist = new Set()) => {
files.map(file => watchlist.add(file));
return watchlist;
});
this.hooks.on(`dev.watch.options`, (watchOptions = {}) => ({
...watchOptions,
...options,
}));
return this;
};
const makeFilesAndOptions = (...params) => {
let files = [];
let options = {};
if (Array.isArray(params[0])) {
files = params[0];
}
if (isString(params[0])) {
files = [params[0]];
}
if (params[0] && !Array.isArray(params[0]) && !isString(params[0])) {
options = params[0];
}
if (params[1]) {
options = params[1];
}
return [files, options];
};