@applicvision/js-toolbox
Version:
A collection of tools for modern JavaScript development
46 lines (37 loc) • 1.44 kB
JavaScript
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()
})
}