Skip to main content
Module

x/drollup/src/rollup/watch.ts

Next-generation ES module bundler ported for Deno
Latest
File
import type { RollupWatcher, RollupWatchOptions } from "./mod.ts";import { EventEmitter } from "../../deps.ts";import { Watcher } from "./watcher.ts";import { ensureArray } from "../ensureArray.ts";import { handleError } from "../logging.ts";
/** * WatchEmitter * * @private */class WatchEmitter extends EventEmitter { constructor() { super(); this.setMaxListeners(Infinity); }
close() {}}
/** * watch * * The `watch` function rebuilds your bundle when it detects that the * individual modules have changed on disk. It is used internally when * you run Rollup from the command line with the `--watch` flag. Note * that when using watch mode via the JavaScript API, it is your * responsibility to call `event.result.close()` in response to the * `BUNDLE_END` event to allow plugins to clean up resources in the * `closeBundle` hook. * * @param {RollupWatchOptions|RollupWatchOptions[]} config * @returns {RollupWatcher} * @public */export function watch( config: RollupWatchOptions | RollupWatchOptions[],): RollupWatcher { const emitter = new WatchEmitter() as RollupWatcher; const configArray = ensureArray(config); const watchConfigs = configArray.filter((config) => config.watch !== false);
if (!watchConfigs.length) { throw handleError({ message: `Invalid value for option "watch" - there must be at least one config where "watch" is not set to "false".`, }); }
new Watcher(watchConfigs, emitter);
return emitter;}