This commit is contained in:
Tben 2023-07-30 10:06:18 +01:00
parent d138241473
commit f256310387
3 changed files with 244 additions and 161 deletions

177
dist/index.js vendored
View File

@ -6,92 +6,111 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs")); const fs_1 = __importDefault(require("fs"));
const child_process_1 = require("child_process"); const child_process_1 = require("child_process");
if (fs_1.default.existsSync("./lesscw.config.json")) { const grabSrcDisStrings = () => {
if (process.argv.indexOf("--src") >= 0 || process.argv.indexOf("--dst") >= 0) { 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 { try {
process.argv.splice(process.argv.indexOf("--src")); const configObject = JSON.parse(fs_1.default.readFileSync("./lesscw.config.json", "utf-8"));
process.argv.splice(process.argv.indexOf("--dst")); 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);
catch (error) { } process.argv.push("--dst", configObject.dst);
} }
try { 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)) {
const configObject = JSON.parse(fs_1.default.readFileSync("./lesscw.config.json", "utf-8")); process.argv.push("--src", configObject.src.join(","));
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("--dst", configObject.dst.join(","));
process.argv.push("--src", configObject.src); }
process.argv.push("--dst", configObject.dst); else if ((configObject === null || configObject === void 0 ? void 0 : configObject.srcDst) && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) {
} const srcDstArray = configObject.srcDst;
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)) { let srcArray = [];
process.argv.push("--src", configObject.src.join(",")); let dstArray = [];
process.argv.push("--dst", configObject.dst.join(",")); 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") {
else if ((configObject === null || configObject === void 0 ? void 0 : configObject.srcDst) && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) { srcArray.push(item.src);
const srcDstArray = configObject.srcDst; dstArray.push(item.dst);
let srcArray = []; }
let dstArray = []; });
srcDstArray.forEach((item) => { if (srcArray.length && dstArray.length) {
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") { process.argv.push("--src", srcArray.join(","));
srcArray.push(item.src); process.argv.push("--dst", dstArray.join(","));
dstArray.push(item.dst);
} }
});
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) { const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null;
console.log("ERROR in your config file =>", error.message); const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null;
process.exit(); return { sourceFile, destinationFile };
} };
} const { sourceFile, destinationFile } = grabSrcDisStrings();
const sourceFile = process.argv.indexOf("--src") >= 0 ? process.argv[process.argv.indexOf("--src") + 1] : null; console.log("- \x1b[35mStart:\x1b[0m Running Less compiler ...");
const destinationFile = process.argv.indexOf("--dst") >= 0 ? process.argv[process.argv.indexOf("--dst") + 1] : null;
console.log("\x1b[44mRunning Less compiler\x1b[0m ...");
if (!sourceFile || !destinationFile) { 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(); process.exit();
} }
const sourceFiles = sourceFile.split(","); function traverseFiles(src, dst) {
const dstFiles = destinationFile.split(","); const sourceFiles = src.split(",");
for (let i = 0; i < sourceFiles.length; i++) { const dstFiles = dst.split(",");
const srcFolder = sourceFiles[i]; for (let i = 0; i < sourceFiles.length; i++) {
const dstFile = dstFiles[i]; const srcFolder = sourceFiles[i];
if ((srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.[^\/]+$/)) && !(srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/))) { const dstFile = dstFiles[i];
console.log("\x1b[33mERROR:\x1b[0m Source must be a folder or a .less file"); if ((srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.[^\/]+$/)) && !(srcFolder === null || srcFolder === void 0 ? void 0 : srcFolder.match(/\.less$/))) {
process.exit(); console.log("- \x1b[31mERROR:\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");
} }
else { if (!fs_1.default.existsSync(srcFolder)) {
fs_1.default.mkdirSync(srcFolder.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); 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"); fs_1.default.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8");
} }
} if (!fs_1.default.existsSync(dstFile)) {
else if (fs_1.default.existsSync(srcFolder) && fs_1.default.existsSync((srcFolder + "/main.less").replace(/\/\//g, ""))) { if (dstFile === null || dstFile === void 0 ? void 0 : dstFile.match(/\.css$/)) {
fs_1.default.writeFileSync((srcFolder + "/main.less").replace(/\/\//g, ""), "", "utf-8"); 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");
if (!fs_1.default.existsSync(dstFile)) { }
if (dstFile === null || dstFile === void 0 ? void 0 : dstFile.match(/\.css$/)) { else {
fs_1.default.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true }); fs_1.default.mkdirSync(dstFile.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true });
fs_1.default.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); fs_1.default.writeFileSync((dstFile + "/_main.css").replace(/\/\//g, ""), "/* 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) { 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)))) { 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; 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) => { (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) { 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(/\[/)) { if (!(evtType === null || evtType === void 0 ? void 0 : evtType.match(/change/i)) && fileName && fileName.match(/\[/)) {
fs_1.default.unlinkSync(finalDstPath); fs_1.default.unlinkSync(finalDstPath);
} }
return; 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);
}
}); });
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "lessc-watcher", "name": "lessc-watcher",
"version": "1.1.5", "version": "1.1.6",
"description": "A minimal package to watch less files and compile them to css", "description": "A minimal package to watch less files and compile them to css",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {

View File

@ -1,115 +1,149 @@
#! /usr/bin/env node #! /usr/bin/env node
import fs from "fs"; import fs, { watch } from "fs";
import { exec } from "child_process"; import { exec, spawn } from "child_process";
import { LessCssWatcherConfigObject } from "./index.d"; 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 grabSrcDisStrings = () => {
const configObject: LessCssWatcherConfigObject = JSON.parse(fs.readFileSync("./lesscw.config.json", "utf-8")); if (fs.existsSync("./lesscw.config.json")) {
if (process.argv.indexOf("--src") >= 0 || process.argv.indexOf("--dst") >= 0) {
if (configObject?.src && configObject?.dst && typeof configObject.src === "string" && typeof configObject.dst === "string") { try {
process.argv.push("--src", configObject.src); process.argv.splice(process.argv.indexOf("--src"));
process.argv.push("--dst", configObject.dst); process.argv.splice(process.argv.indexOf("--dst"));
} else if (configObject?.src && configObject?.dst && typeof configObject.src === "object" && typeof configObject.dst === "object" && Array.isArray(configObject.src) && Array.isArray(configObject.dst)) { } catch (error) {}
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) { try {
const srcDstArray = configObject.srcDst; const configObject: LessCssWatcherConfigObject = JSON.parse(fs.readFileSync("./lesscw.config.json", "utf-8"));
let srcArray: string[] = []; if (configObject?.src && configObject?.dst && typeof configObject.src === "string" && typeof configObject.dst === "string") {
let dstArray: string[] = []; process.argv.push("--src", configObject.src);
process.argv.push("--dst", configObject.dst);
srcDstArray.forEach((item) => { } else if (configObject?.src && configObject?.dst && typeof configObject.src === "object" && typeof configObject.dst === "object" && Array.isArray(configObject.src) && Array.isArray(configObject.dst)) {
if (item?.src && item?.dst && typeof item.src === "string" && typeof item.dst === "string") { process.argv.push("--src", configObject.src.join(","));
srcArray.push(item.src); process.argv.push("--dst", configObject.dst.join(","));
dstArray.push(item.dst); } else if (configObject?.srcDst && Array.isArray(configObject.srcDst) && configObject.srcDst.length > 0) {
} const srcDstArray = configObject.srcDst;
});
let srcArray: string[] = [];
if (srcArray.length && dstArray.length) { let dstArray: string[] = [];
process.argv.push("--src", srcArray.join(","));
process.argv.push("--dst", dstArray.join(",")); 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) { 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(); process.exit();
} }
const sourceFiles = sourceFile.split(","); //////////////////////////////////////////////////////////////////////////////
const dstFiles = destinationFile.split(","); //////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
/** /**
* Loop through source files and destination files and run the compile function * Loop through source files and destination files and run the compile function
*/ */
for (let i = 0; i < sourceFiles.length; i++) { function traverseFiles(src: string, dst: string) {
const srcFolder = sourceFiles[i]; const sourceFiles = src.split(",");
const dstFile = dstFiles[i]; const dstFiles = dst.split(",");
if (srcFolder?.match(/\.[^\/]+$/) && !srcFolder?.match(/\.less$/)) { for (let i = 0; i < sourceFiles.length; i++) {
console.log("\x1b[33mERROR:\x1b[0m Source must be a folder or a .less file"); const srcFolder = sourceFiles[i];
process.exit(); const dstFile = dstFiles[i];
}
if (!fs.existsSync(srcFolder)) { if (srcFolder?.match(/\.[^\/]+$/) && !srcFolder?.match(/\.less$/)) {
if (srcFolder?.match(/\.less$/)) { console.log("- \x1b[31mERROR:\x1b[0m Source must be a folder or a .less file");
fs.mkdirSync(srcFolder.replace(/\/[^\/]+\.less$/, ""), { recursive: true }); process.exit();
fs.writeFileSync(srcFolder, "", "utf-8"); }
} else {
fs.mkdirSync(srcFolder.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); 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"); 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 (!fs.existsSync(dstFile)) {
if (dstFile?.match(/\.css$/)) { if (dstFile?.match(/\.css$/)) {
fs.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true }); fs.mkdirSync(dstFile.replace(/\/[^\/]+\.css$/, ""), { recursive: true });
fs.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8"); fs.writeFileSync(dstFile, "/* Your compiled CSS from your less file(s) goes here */", "utf-8");
} else { } else {
fs.mkdirSync(dstFile.replace(/\/[^\/]+\.[^\/]+$/, ""), { recursive: true }); 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"); 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 * Compile less file to css function
* @param fileName - less file path or folder path * @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) => { exec(`lessc ${finalSrcPath} ${finalDstPath?.match(/\.css$/) ? finalDstPath : finalDstPath.replace(/\/$/, "") + "/_main.css"}`, (error, stdout, stderr) => {
/** @type {Error} */ /** @type {Error} */
if (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(/\[/)) { if (!evtType?.match(/change/i) && fileName && fileName.match(/\[/)) {
fs.unlinkSync(finalDstPath); fs.unlinkSync(finalDstPath);
@ -150,6 +184,26 @@ function compile(fileName: string, dst: string, evtType: string | null) {
return; 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);
}
}); });
} }