UNPKG

timpla

Version:

An optimal website development experience for [server-side] web frameworks.

114 lines 4.41 kB
#!/usr/bin/env node "use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); process.env.INIT_CWD = process.cwd(); var chalk_1 = require("chalk"); var spawn = require("cross-spawn"); var log = require("fancy-log"); var fs = require("fs"); var path = require("path"); var internal_1 = require("./internal"); var gulpModulePath = path.dirname(require.resolve('gulp')); var gulpBinaryFile = path.join(gulpModulePath, '/bin/gulp.js'); var gulpFile = path.resolve(__dirname, '../lib'); var logLine = function () { return log(chalk_1.default.green("==================================================")); }; // Check if the user specified timplaWatch var timplaWatch = internal_1.TIMPLA_CONFIG.development && internal_1.TIMPLA_CONFIG.development.timplaWatch; // If the user didn't specify anything, set timplaWatch to true if (timplaWatch === undefined) { timplaWatch = true; } var args = process.argv.slice(2); // when no args are passed var devMode = args.length === 0; // Prepend everything with npx args.unshift('--gulpfile', gulpFile); var defaultEnv = devMode ? 'development' : 'production'; process.env.NODE_ENV = process.env.NODE_ENV || defaultEnv; var spawnEnv = Object.create(process.env); var run = function (reload) { if (reload === void 0) { reload = false; } // Used to check if pages should reload, on dev mode. spawnEnv.TIMPLA_DEV_RELOAD = reload; var prc = spawn(gulpBinaryFile, args, { env: spawnEnv, stdio: 'inherit' }); prc.on('close', function (code, signal) { if (code !== null) { process.exit(code); } if (signal) { if (signal === 'SIGKILL') { process.exit(137); } // eslint-disable-next-line log(chalk_1.default.green("got signal " + signal + ", exiting")); process.exit(1); } process.exit(0); }); prc.on('error', function (err) { log.error(err); process.exit(1); }); return prc; }; var proc = run(); var restartServer = function (eventType, fileName) { log(chalk_1.default.green("\n> " + eventType + "d " + fileName + ", restarting the server...")); // Don't listen to 'close' now since otherwise parent gets killed by listener proc.removeAllListeners('close'); proc.kill(); proc = run(true); }; if (devMode && timplaWatch) { var watchableFiles_1 = ['eslint', 'tslint', 'babel', 'tsconfig', 'timplaconfig']; var sessionWatchFiles_1 = __spread(watchableFiles_1); fs.watch(internal_1.TIMPLA_PROCESS.INIT_CWD, function (eventType, fileName) { if (watchableFiles_1.find(function (e) { return fileName.indexOf(e) > -1; })) { // eslint-disable-next-line restartServer(eventType, fileName); } }); // Check if it is an array if (timplaWatch instanceof Array) { timplaWatch.forEach(function (fileOrFolder) { var pathsToCheck = [path.resolve(internal_1.TIMPLA_PROCESS.INIT_CWD, fileOrFolder), fileOrFolder]; var firstValidPath = pathsToCheck.find(function (e) { return fs.existsSync(e); }); if (firstValidPath) { sessionWatchFiles_1.push(firstValidPath); fs.watch(firstValidPath, function (eventType, fileName) { restartServer(eventType, fileName); }); } }); } logLine(); log(chalk_1.default.green("Timpla started")); logLine(); log(chalk_1.default.green("========= Watching files for full-reload =========")); sessionWatchFiles_1.map(function (f) { return log(f); }); logLine(); } else if (devMode) { log(chalk_1.default.yellow("Timpla: reload disabled")); } //# sourceMappingURL=bin.js.map