siphon-cli
Version:
Simple bundler for web applications. 📦🔧🧡
68 lines (67 loc) • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var fs_1 = require("fs");
var colors = require("colors");
var __1 = require("..");
var utils_1 = require("../../utils");
var errors_1 = require("../errors");
var path_1 = require("path");
colors.setTheme({
red: "red",
gray: "gray",
green: "green",
yellow: "yellow",
});
function watchSrc(options) {
var encounteredError = false;
function runBundler() {
options.relations.forEach(function (relation) {
var source = "".concat(options.rootDir, "/").concat(relation.from), destination = "".concat(options.outDir, "/").concat(relation.to);
try {
(0, __1.default)(source).into(destination, options);
encounteredError = false;
}
catch (e) {
console.log();
console.log(colors.bold("ERROR:".black.bgRed + colors.red(" Failed to compile.")));
console.log();
if (!e.heading)
throw e;
console.log(e.message);
if ((0, fs_1.existsSync)(destination) && (0, fs_1.existsSync)(source)) {
e.root = (0, path_1.resolve)(options.rootDir.toString());
(0, fs_1.writeFileSync)(destination, (0, utils_1.HTMLError)(e));
}
encounteredError = true;
}
});
}
if (!(0, fs_1.existsSync)(options.rootDir))
errors_1.default.enc("NO_ROOTDIR", options.rootDir);
var ready = true;
function throttle() {
if (ready) {
console.clear();
console.log("".concat("".concat((0, utils_1.newTimeStamp)({
noDate: true,
}), ":").gray).concat(" File change detected. Starting bundler...".yellow));
runBundler();
if (!encounteredError) {
console.log();
console.log("".concat("".concat((0, utils_1.newTimeStamp)({
noDate: true,
}), ":").gray).concat(colors.bold(" Bundling successful. Siphon found zero errors.".green)));
}
}
ready = false;
setTimeout(function () {
ready = true;
}, 300);
}
(0, fs_1.watch)(options.rootDir, { recursive: true }, throttle);
console.clear();
console.log("".concat("".concat((0, utils_1.newTimeStamp)({
noDate: true,
}), ":").gray).concat(" Staging Files and starting Siphon in watch mode...".yellow));
}
exports.default = watchSrc;