UNPKG

@applicvision/js-toolbox

Version:

A collection of tools for modern JavaScript development

46 lines (37 loc) 1.44 kB
#! /usr/bin/env node import { parseArguments } from '@applicvision/js-toolbox/args'; import { FileChangeStream, ClientNotifier } from '../autoreload/streams.js'; let parsedArguments try { parsedArguments = parseArguments() .option('port', { description: 'Specify which port to run on.' }) .option('certificate', { description: 'Pass a certificate to start an https server.' }) .option('ignore', { description: 'Specify ignore pattern' }) .help('Welcome to the auto reload server. Start this, specifying which paths to monitor, and import the client script in your web app.\nUsage: [<options>] [--] <pathspec>') .parse() } catch (error) { console.error(error.message) process.exitCode = 1 } if (parsedArguments?.help) { console.log(parsedArguments.help) } else if (parsedArguments) { let watchedPaths = parsedArguments.args if (watchedPaths.length == 0) { watchedPaths = ['.'] } const ignorePatterns = [].concat(parsedArguments.options.ignore ?? []) const fileWatchStream = new FileChangeStream(watchedPaths, ignorePatterns) const clientNotifier = new ClientNotifier({ port: parsedArguments.options.port ?? 3333, paths: watchedPaths, ignorePatterns, certificate: parsedArguments.options.certificate }) fileWatchStream.pipe(clientNotifier) process.stdin.resume() process.stdin.on('close', () => { console.log('exiting gracefully') fileWatchStream.stop() }) }