UNPKG

siphon-cli

Version:

Simple bundler for web applications. 📦🔧🧡

68 lines (67 loc) • 2.63 kB
"use strict"; 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;