datasquirel/dist/package-shared/shell/lessWatch.js
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

50 lines
2.4 KiB
JavaScript

import fs from "fs";
import { exec } from "child_process";
require("dotenv").config({ path: "./../.env" });
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("Running Less compiler ...");
const sourceFiles = sourceFile === null || sourceFile === void 0 ? void 0 : sourceFile.split(",");
const dstFiles = destinationFile === null || destinationFile === void 0 ? void 0 : destinationFile.split(",");
if (!sourceFiles || !dstFiles) {
throw new Error("No Source or Destination Files!");
}
for (let i = 0; i < sourceFiles.length; i++) {
const srcFolder = sourceFiles[i];
const dstFile = dstFiles[i];
fs.watch(srcFolder, { recursive: true }, (evtType, prev) => {
if ((prev === null || prev === void 0 ? void 0 : prev.match(/\(/)) || (prev === null || prev === void 0 ? void 0 : prev.match(/\.(j|t)s$/i))) {
return;
}
let finalSrcPath = `${srcFolder}/main.less`;
let finalDstPath = dstFile;
if (prev === null || prev === void 0 ? void 0 : prev.match(/\[/)) {
const paths = prev.split("/");
const targetPathFull = paths[paths.length - 1];
const targetPath = targetPathFull
.replace(/\[|\]/g, "")
.replace(/\.less/, "");
const destinationFileParentFolder = dstFile.replace(/\/[^\/]+\.css$/, "");
const targetDstFilePath = `${destinationFileParentFolder}/${targetPath}.css`;
finalSrcPath = `${srcFolder}/${targetPathFull}`;
finalDstPath = targetDstFilePath;
}
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);
if (!(evtType === null || evtType === void 0 ? void 0 : evtType.match(/change/i)) && (prev === null || prev === void 0 ? void 0 : prev.match(/\[/))) {
fs.unlinkSync(finalDstPath);
}
return;
}
console.log("Less Compilation \x1b[32msuccessful\x1b[0m!");
});
});
}