timpla
Version:
An optimal website development experience for [server-side] web frameworks.
114 lines • 4.41 kB
JavaScript
;
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