UNPKG

kick

Version:

Kickstarter and generator for AngularJS based on ES6, webpack and best practices

65 lines (50 loc) 1.75 kB
'use strict'; const Logger = require('../logger'); const Utils = require('../utils'); const message = require('../messages'); const listenForKeystrokes = require('keypress'); const open = require('opn'); const portscanner = require('portscanner'); function runServer(port) { const environment = process.argv[3] || 'development'; const args = ['--hot', '--progress', '--port', port]; let command = 'node_modules/.bin/webpack-dev-server'; Logger.log(message.server.running(port)); Logger.log(message.server.commands); listenForKeystrokes(process.stdin); let childProcess = Utils.spawnProcess(command, args, environment, { inherit: true }); // Catch keystrokes from the process // This enables restarting and opening the browser process.stdin.on('keypress', (character, key) => { if (!key || !key.ctrl) { return; } switch (key.name) { case 'c': childProcess.on('exit', () => { process.exit(); }); Logger.log('Stopping server...'); Utils.terminateProcess(childProcess); break; case 'r': childProcess.on('exit', () => { childProcess = Utils.spawnProcess(command, args, environment, { inherit: true }); Logger.log('Server reloaded!'); }); Utils.terminateProcess(childProcess); break; case 'o': open('http://localhost:' + port); break; } }); process.stdin.setRawMode(true); process.stdin.resume(); } module.exports = function () { Utils.ensurePackagesExist(); portscanner.findAPortNotInUse(8080, 8100, '127.0.0.1', (error, availablePort) => { runServer(availablePort); }); };