From f256310387ddc2b6be834d94172123be526d7b13 Mon Sep 17 00:00:00 2001 From: Tben Date: Sun, 30 Jul 2023 10:06:18 +0100 Subject: [PATCH] Upgrade --- dist/index.js | 177 ++++++++++++++++++++++----------------- package.json | 2 +- src/index.ts | 226 +++++++++++++++++++++++++++++++------------------- 3 files changed, 244 insertions(+), 161 deletions(-) diff --git a/dist/index.js b/dist/index.js index 5afd54d..be174d6 100644 --- a/dist/index.js +++ b/dist/index.js @@ -6,92 +6,111 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const child_process_1 = require("child_process"); -if (fs_1.default.existsSync("./lesscw.config.json")) { - if (process.argv.indexOf("--src") >= 0 || process.argv.indexOf("--dst") >= 0) { +const grabSrcDisStrings = () => { + if (fs_1.default.existsSync("./lesscw.config.json")) { + if (process.argv.indexOf("--src") >= 0 || process.argv.indexOf("--dst") >= 0) { + try { + process.argv.splice(process.argv.indexOf("--src")); + process.argv.splice(process.argv.indexOf("--dst")); + } + catch (error) { } + } try { - process.argv.splice(process.argv.indexOf("--src")); - process.argv.splice(process.argv.indexOf("--dst")); - } - catch (error) { } - } - try { - const configObject = JSON.parse(fs_1.default.readFileSync("./lesscw.config.json", "utf-8")); - if ((configObject === null || configObject === void 0 ? void 0 : configObject.src) && (configObject === null || configObject === void 0 ? void 0 : configObject.dst) && typeof configObject.src === "string" && typeof configObject.dst === "string") { - process.argv.push("--src", configObject.src); - process.argv.push("--dst", configObject.dst); - } - else if ((configObject === null || configObject === void 0 ? void 0 : configObject.src) && (configObject === null || configObject === void 0 ? void 0 : configObject.dst) && typeof configObject.src === "object" && typeof configObject.dst === "object" && Array.isArray(configObject.src) && Array.isArray(configObject.dst)) { - process.argv.push("--src", configObject.src.join(",")); - process.argv.push("--dst", configObject.dst.join(",")); - } - else if ((configObject === null || configObject === void 0 ? void 0 : configObject.srcDst) && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) { - const srcDstArray = configObject.srcDst; - let srcArray = []; - let dstArray = []; - srcDstArray.forEach((item) => { - if ((item === null || item === void 0 ? void 0 : item.src) && (item === null || item === void 0 ? void 0 : item.dst) && typeof item.src === "string" && typeof item.dst === "string") { - srcArray.push(item.src); - dstArray.push(item.dst); + const configObject = JSON.parse(fs_1.default.readFileSync("./lesscw.config.json", "utf-8")); + if ((configObject === null || configObject === void 0 ? void 0 : configObject.src) && (configObject === null || configObject === void 0 ? void 0 : configObject.dst) && typeof configObject.src === "string" && typeof configObject.dst === "string") { + process.argv.push("--src", configObject.src); + process.argv.push("--dst", configObject.dst); + } + else if ((configObject === null || configObject === void 0 ? void 0 : configObject.src) && (configObject === null || configObject === void 0 ? void 0 : configObject.dst) && typeof configObject.src === "object" && typeof configObject.dst === "object" && Array.isArray(configObject.src) && Array.isArray(configObject.dst)) { + process.argv.push("--src", configObject.src.join(",")); + process.argv.push("--dst", configObject.dst.join(",")); + } + else if ((configObject === null || configObject === void 0 ? void 0 : configObject.srcDst) && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) { + const srcDstArray = configObject.srcDst; + let srcArray = []; + let dstArray = []; + srcDstArray.forEach((item) => { + if ((item === null || item === void 0 ? void 0 : item.src) && (item === null || item === void 0 ? void 0 : item.dst) && typeof item.src === "string" && typeof item.dst === "string") { + srcArray.push(item.src); + dstArray.push(item.dst); + } + }); + if (srcArray.length && dstArray.length) { + process.argv.push("--src", srcArray.join(",")); + process.argv.push("--dst", dstArray.join(",")); } - }); - if (srcArray.length && dstArray.length) { - process.argv.push("--src", srcArray.join(",")); - process.argv.push("--dst", dstArray.join(",")); } } + catch (error) { + console.log("- \x1b[31mERROR:\x1b[0m Your config file has some errors. ERROR =>", error.message); + process.exit(); + } } - catch (error) { - console.log("ERROR in your config file =>", error.message); - process.exit(); - } -} -const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null; -const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null; -console.log("\x1b[44mRunning Less compiler\x1b[0m ..."); + const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null; + const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null; + return { sourceFile, destinationFile }; +}; +const { sourceFile, destinationFile } = grabSrcDisStrings(); +console.log("- \x1b[35mStart:\x1b[0m Running Less compiler ..."); if (!sourceFile || !destinationFile) { - console.log("\x1b[33mERROR:\x1b[0m => Missing source or destination file"); + console.log("- \x1b[31mERROR:\x1b[0m => Missing source or destination file"); process.exit(); } -const sourceFiles = sourceFile.split(","); -const dstFiles = destinationFile.split(","); -for (let i = 0; i < sourceFiles.length; i++) { - const srcFolder = sourceFiles[i]; - const dstFile = dstFiles[i]; - if ((srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.[^\/]+$/)) && !(srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/))) { - console.log("\x1b[33mERROR:\x1b[0m Source must be a folder or a .less file"); - process.exit(); - } - if (!fs_1.default.existsSync(srcFolder)) { - if (srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/)) { - fs_1.default.mkdirSync(srcFolder.replace(/\/[^\/]+\.less$/, ""), { recursive: true }); - fs_1.default.writeFileSync(srcFolder, "", "utf-8"); +function traverseFiles(src, dst) { + const sourceFiles = src.split(","); + const dstFiles = dst.split(","); + for (let i = 0; i < sourceFiles.length; i++) { + const srcFolder = sourceFiles[i]; + const dstFile = dstFiles[i]; + if ((srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.[^\/]+$/)) && !(srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/))) { + console.log("- \x1b[31mERROR:\x1b[0m Source must be a folder or a .less file"); + process.exit(); } - else { - fs_1.default.mkdirSync(srcFolder.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); + if (!fs_1.default.existsSync(srcFolder)) { + if (srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/)) { + fs_1.default.mkdirSync(srcFolder.replace(/\/[^\/]+\.less$/, ""), { recursive: true }); + fs_1.default.writeFileSync(srcFolder, "", "utf-8"); + } + else { + fs_1.default.mkdirSync(srcFolder.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); + fs_1.default.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); + } + } + else if (fs_1.default.existsSync(srcFolder) && fs_1.default.existsSync((srcFolder + "/main.less").replace(/\/\//g, ""))) { fs_1.default.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); } - } - else if (fs_1.default.existsSync(srcFolder) && fs_1.default.existsSync((srcFolder + "/main.less").replace(/\/\//g, ""))) { - fs_1.default.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); - } - if (!fs_1.default.existsSync(dstFile)) { - if (dstFile === null || dstFile === void 0 ? void 0 : dstFile.match(/\.css$/)) { - fs_1.default.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true }); - fs_1.default.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); - } - else { - fs_1.default.mkdirSync(dstFile.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); - fs_1.default.writeFileSync((dstFile + "/_main.css").replace(/\/\//g, ""), "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); + if (!fs_1.default.existsSync(dstFile)) { + if (dstFile === null || dstFile === void 0 ? void 0 : dstFile.match(/\.css$/)) { + fs_1.default.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true }); + fs_1.default.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); + } + else { + fs_1.default.mkdirSync(dstFile.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); + fs_1.default.writeFileSync((dstFile + "/_main.css").replace(/\/\//g, ""), "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); + } } + compile(srcFolder, dstFile, null); + const watcher = fs_1.default.watch(srcFolder, { recursive: true }, (evtType, fileName) => { + if (!fileName) + return; + const filePathRoot = (srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/)) ? srcFolder : srcFolder + "/" + fileName; + try { + const currentProcessArgsSrc = process.argv[process.argv.indexOf("--src") + 1]; + const activeSourceFiles = currentProcessArgsSrc.split(","); + if (activeSourceFiles.includes(srcFolder)) { + compile(filePathRoot, dstFile, evtType); + } + else { + watcher.close(); + } + } + catch (error) { + console.log("- \x1b[31mERROR:\x1b[0m Please check your config file =>", error.message); + } + }); } - compile(srcFolder, dstFile, null); - fs_1.default.watch(srcFolder, { recursive: true }, (evtType, fileName) => { - if (!fileName) - return; - const filePathRoot = (srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/)) ? srcFolder : srcFolder + "/" + fileName; - compile(filePathRoot, dstFile, evtType); - }); } +traverseFiles(sourceFile, destinationFile); function compile(fileName, dst, evtType) { if ((fileName === null || fileName === void 0 ? void 0 : fileName.match(/\(/)) || (fileName.match(/\..{2,4}$/) && !(fileName === null || fileName === void 0 ? void 0 : fileName.match(/\.less$/i)))) { return; @@ -109,12 +128,22 @@ function compile(fileName, dst, evtType) { } (0, child_process_1.exec)(`lessc ${finalSrcPath} ${(finalDstPath === null || finalDstPath === void 0 ? void 0 : finalDstPath.match(/\.css$/)) ? finalDstPath : finalDstPath.replace(/\/$/, "") + "/_main.css"}`, (error, stdout, stderr) => { if (error) { - console.log("ERROR =>", error.message); + console.log("- \x1b[33mWarn:\x1b[0m Compilation didn't run successfully. ERROR =>", error.message); if (!(evtType === null || evtType === void 0 ? void 0 : evtType.match(/change/i)) && fileName && fileName.match(/\[/)) { fs_1.default.unlinkSync(finalDstPath); } return; } - console.log("Less Compilation \x1b[32msuccessful\x1b[0m!"); + console.log("- \x1b[32mCompiled:\x1b[0m Less Compilation Successful!"); + }); +} +if (fs_1.default.existsSync("./lesscw.config.json")) { + fs_1.default.watchFile("./lesscw.config.json", (evtType, fileName) => { + console.log("- \x1b[34mInfo:\x1b[0m! Restarting process..."); + const newSrcDistStrings = grabSrcDisStrings(); + if (newSrcDistStrings.destinationFile && newSrcDistStrings.sourceFile) { + process.argv.push("--src", newSrcDistStrings.sourceFile, "--dst", newSrcDistStrings.destinationFile); + traverseFiles(newSrcDistStrings.sourceFile, newSrcDistStrings.destinationFile); + } }); } diff --git a/package.json b/package.json index 4a979e3..4c7c004 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lessc-watcher", - "version": "1.1.5", + "version": "1.1.6", "description": "A minimal package to watch less files and compile them to css", "main": "dist/index.js", "bin": { diff --git a/src/index.ts b/src/index.ts index 5bab883..309d63c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,115 +1,149 @@ #! /usr/bin/env node -import fs from "fs"; -import { exec } from "child_process"; +import fs, { watch } from "fs"; +import { exec, spawn } from "child_process"; import { LessCssWatcherConfigObject } from "./index.d"; -if (fs.existsSync("./lesscw.config.json")) { - if (process.argv.indexOf("--src") >= 0 || process.argv.indexOf("--dst") >= 0) { - try { - process.argv.splice(process.argv.indexOf("--src")); - process.argv.splice(process.argv.indexOf("--dst")); - } catch (error) {} - } +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// - try { - const configObject: LessCssWatcherConfigObject = JSON.parse(fs.readFileSync("./lesscw.config.json", "utf-8")); - - if (configObject?.src && configObject?.dst && typeof configObject.src === "string" && typeof configObject.dst === "string") { - process.argv.push("--src", configObject.src); - process.argv.push("--dst", configObject.dst); - } else if (configObject?.src && configObject?.dst && typeof configObject.src === "object" && typeof configObject.dst === "object" && Array.isArray(configObject.src) && Array.isArray(configObject.dst)) { - process.argv.push("--src", configObject.src.join(",")); - process.argv.push("--dst", configObject.dst.join(",")); - } else if (configObject?.srcDst && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) { - const srcDstArray = configObject.srcDst; - - let srcArray: string[] = []; - let dstArray: string[] = []; - - srcDstArray.forEach((item) => { - if (item?.src && item?.dst && typeof item.src === "string" && typeof item.dst === "string") { - srcArray.push(item.src); - dstArray.push(item.dst); - } - }); - - if (srcArray.length && dstArray.length) { - process.argv.push("--src", srcArray.join(",")); - process.argv.push("--dst", dstArray.join(",")); - } +const grabSrcDisStrings = () => { + if (fs.existsSync("./lesscw.config.json")) { + if (process.argv.indexOf("--src") >= 0 || process.argv.indexOf("--dst") >= 0) { + try { + process.argv.splice(process.argv.indexOf("--src")); + process.argv.splice(process.argv.indexOf("--dst")); + } catch (error) {} + } + + try { + const configObject: LessCssWatcherConfigObject = JSON.parse(fs.readFileSync("./lesscw.config.json", "utf-8")); + + if (configObject?.src && configObject?.dst && typeof configObject.src === "string" && typeof configObject.dst === "string") { + process.argv.push("--src", configObject.src); + process.argv.push("--dst", configObject.dst); + } else if (configObject?.src && configObject?.dst && typeof configObject.src === "object" && typeof configObject.dst === "object" && Array.isArray(configObject.src) && Array.isArray(configObject.dst)) { + process.argv.push("--src", configObject.src.join(",")); + process.argv.push("--dst", configObject.dst.join(",")); + } else if (configObject?.srcDst && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) { + const srcDstArray = configObject.srcDst; + + let srcArray: string[] = []; + let dstArray: string[] = []; + + srcDstArray.forEach((item) => { + if (item?.src && item?.dst && typeof item.src === "string" && typeof item.dst === "string") { + srcArray.push(item.src); + dstArray.push(item.dst); + } + }); + + if (srcArray.length && dstArray.length) { + process.argv.push("--src", srcArray.join(",")); + process.argv.push("--dst", dstArray.join(",")); + } + } + } catch (error: any) { + console.log("- \x1b[31mERROR:\x1b[0m Your config file has some errors. ERROR =>", error.message); + process.exit(); } - } catch (error: any) { - console.log("ERROR in your config file =>", error.message); - process.exit(); } -} -const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null; -const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null; + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////// -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ -/** ****************************************************************************** */ + const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null; + const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null; -console.log("\x1b[44mRunning Less compiler\x1b[0m ..."); + return { sourceFile, destinationFile }; +}; + +const { sourceFile, destinationFile } = grabSrcDisStrings(); + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +console.log("- \x1b[35mStart:\x1b[0m Running Less compiler ..."); if (!sourceFile || !destinationFile) { - console.log("\x1b[33mERROR:\x1b[0m => Missing source or destination file"); + console.log("- \x1b[31mERROR:\x1b[0m => Missing source or destination file"); process.exit(); } -const sourceFiles = sourceFile.split(","); -const dstFiles = destinationFile.split(","); +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// /** * Loop through source files and destination files and run the compile function */ -for (let i = 0; i < sourceFiles.length; i++) { - const srcFolder = sourceFiles[i]; - const dstFile = dstFiles[i]; +function traverseFiles(src: string, dst: string) { + const sourceFiles = src.split(","); + const dstFiles = dst.split(","); - if (srcFolder?.match(/\.[^\/]+$/) && !srcFolder?.match(/\.less$/)) { - console.log("\x1b[33mERROR:\x1b[0m Source must be a folder or a .less file"); - process.exit(); - } + for (let i = 0; i < sourceFiles.length; i++) { + const srcFolder = sourceFiles[i]; + const dstFile = dstFiles[i]; - if (!fs.existsSync(srcFolder)) { - if (srcFolder?.match(/\.less$/)) { - fs.mkdirSync(srcFolder.replace(/\/[^\/]+\.less$/, ""), { recursive: true }); - fs.writeFileSync(srcFolder, "", "utf-8"); - } else { - fs.mkdirSync(srcFolder.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); + if (srcFolder?.match(/\.[^\/]+$/) && !srcFolder?.match(/\.less$/)) { + console.log("- \x1b[31mERROR:\x1b[0m Source must be a folder or a .less file"); + process.exit(); + } + + if (!fs.existsSync(srcFolder)) { + if (srcFolder?.match(/\.less$/)) { + fs.mkdirSync(srcFolder.replace(/\/[^\/]+\.less$/, ""), { recursive: true }); + fs.writeFileSync(srcFolder, "", "utf-8"); + } else { + fs.mkdirSync(srcFolder.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); + fs.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); + } + } else if (fs.existsSync(srcFolder) && fs.existsSync((srcFolder + "/main.less").replace(/\/\//g, ""))) { fs.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); } - } else if (fs.existsSync(srcFolder) && fs.existsSync((srcFolder + "/main.less").replace(/\/\//g, ""))) { - fs.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); - } - if (!fs.existsSync(dstFile)) { - if (dstFile?.match(/\.css$/)) { - fs.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true }); - fs.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); - } else { - fs.mkdirSync(dstFile.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); - fs.writeFileSync((dstFile + "/_main.css").replace(/\/\//g, ""), "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); + if (!fs.existsSync(dstFile)) { + if (dstFile?.match(/\.css$/)) { + fs.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true }); + fs.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); + } else { + fs.mkdirSync(dstFile.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); + fs.writeFileSync((dstFile + "/_main.css").replace(/\/\//g, ""), "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); + } } + + compile(srcFolder, dstFile, null); + + const watcher = fs.watch(srcFolder, { recursive: true }, (evtType, fileName) => { + if (!fileName) return; + + const filePathRoot = srcFolder?.match(/\.less$/) ? srcFolder : srcFolder + "/" + fileName; + + try { + const currentProcessArgsSrc = process.argv[process.argv.indexOf("--src") + 1]; + const activeSourceFiles = currentProcessArgsSrc.split(","); + + if (activeSourceFiles.includes(srcFolder)) { + compile(filePathRoot, dstFile, evtType); + } else { + watcher.close(); + } + } catch (error: any) { + console.log("- \x1b[31mERROR:\x1b[0m Please check your config file =>", error.message); + } + }); } - - compile(srcFolder, dstFile, null); - - fs.watch(srcFolder, { recursive: true }, (evtType, fileName) => { - if (!fileName) return; - - const filePathRoot = srcFolder?.match(/\.less$/) ? srcFolder : srcFolder + "/" + fileName; - - compile(filePathRoot, dstFile, evtType); - }); } +traverseFiles(sourceFile, destinationFile); + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + /** * Compile less file to css function * @param fileName - less file path or folder path @@ -141,7 +175,7 @@ function compile(fileName: string, dst: string, evtType: string | null) { exec(`lessc ${finalSrcPath} ${finalDstPath?.match(/\.css$/) ? finalDstPath : finalDstPath.replace(/\/$/, "") + "/_main.css"}`, (error, stdout, stderr) => { /** @type {Error} */ if (error) { - console.log("ERROR =>", error.message); + console.log("- \x1b[33mWarn:\x1b[0m Compilation didn't run successfully. ERROR =>", error.message); if (!evtType?.match(/change/i) && fileName && fileName.match(/\[/)) { fs.unlinkSync(finalDstPath); @@ -150,6 +184,26 @@ function compile(fileName: string, dst: string, evtType: string | null) { return; } - console.log("Less Compilation \x1b[32msuccessful\x1b[0m!"); + console.log("- \x1b[32mCompiled:\x1b[0m Less Compilation Successful!"); + }); +} + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/** + * watch for changes to the config file + */ +if (fs.existsSync("./lesscw.config.json")) { + fs.watchFile("./lesscw.config.json", (evtType, fileName) => { + console.log("- \x1b[34mInfo:\x1b[0m! Restarting process..."); + + const newSrcDistStrings = grabSrcDisStrings(); + + if (newSrcDistStrings.destinationFile && newSrcDistStrings.sourceFile) { + process.argv.push("--src", newSrcDistStrings.sourceFile, "--dst", newSrcDistStrings.destinationFile); + traverseFiles(newSrcDistStrings.sourceFile, newSrcDistStrings.destinationFile); + } }); }