100 lines
2.7 KiB
JavaScript
100 lines
2.7 KiB
JavaScript
|
const fs = require("fs");
|
||
|
const path = require("path");
|
||
|
|
||
|
const rootDirs = ["assets/scss", "layouts"];
|
||
|
const configFiles = [
|
||
|
{
|
||
|
filePath: "exampleSite/tailwind.config.js",
|
||
|
patterns: ["darkmode:\\s*{[^}]*},", 'darkMode:\\s*"class",'],
|
||
|
},
|
||
|
{
|
||
|
filePath: "exampleSite/data/theme.json",
|
||
|
patterns: ["colors.darkmode"],
|
||
|
},
|
||
|
];
|
||
|
|
||
|
// asset paths
|
||
|
const deleteAssetList = [
|
||
|
"exampleSite/assets/images/logo-darkmode.png",
|
||
|
"layouts/partials/components/theme-switcher.html",
|
||
|
];
|
||
|
|
||
|
const filePaths = [
|
||
|
{
|
||
|
filePath: "layouts/partials/essentials/header.html",
|
||
|
patterns: [
|
||
|
'{{\\s*partial\\s*"components\\/theme-switcher"\\s*\\([^)]*\\)\\s*}}',
|
||
|
],
|
||
|
},
|
||
|
];
|
||
|
|
||
|
filePaths.forEach(({ filePath, patterns }) =>
|
||
|
removeDarkModeFromFiles(filePath, patterns),
|
||
|
);
|
||
|
|
||
|
deleteAssetList.forEach((asset) => {
|
||
|
try {
|
||
|
fs.unlinkSync(asset);
|
||
|
console.log(`${path.basename(asset)} deleted successfully!`);
|
||
|
} catch (error) {
|
||
|
console.error(`${asset} not found`);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
rootDirs.forEach(removeDarkModeFromPages);
|
||
|
configFiles.forEach(removeDarkMode);
|
||
|
|
||
|
function removeDarkModeFromFiles(filePath, regexPatterns) {
|
||
|
const fileContent = fs.readFileSync(filePath, "utf8");
|
||
|
let updatedContent = fileContent;
|
||
|
regexPatterns.forEach((pattern) => {
|
||
|
const regex = new RegExp(pattern, "g");
|
||
|
updatedContent = updatedContent.replace(regex, "");
|
||
|
});
|
||
|
|
||
|
fs.writeFileSync(filePath, updatedContent, "utf8");
|
||
|
}
|
||
|
|
||
|
// like html file
|
||
|
function removeDarkModeFromPages(directoryPath) {
|
||
|
const files = fs.readdirSync(directoryPath);
|
||
|
|
||
|
files.forEach((file) => {
|
||
|
const filePath = path.join(directoryPath, file);
|
||
|
const stats = fs.statSync(filePath);
|
||
|
if (stats.isDirectory()) {
|
||
|
removeDarkModeFromPages(filePath);
|
||
|
} else if (stats.isFile()) {
|
||
|
removeDarkModeFromFiles(filePath, [
|
||
|
'(?:(?!["])\\S)*dark:(?:(?![,;"])\\S)*',
|
||
|
"@apply?(\\s)*;",
|
||
|
]);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function removeDarkMode(configFile) {
|
||
|
const { filePath, patterns } = configFile;
|
||
|
if (filePath === "exampleSite/tailwind.config.js") {
|
||
|
removeDarkModeFromFiles(filePath, patterns);
|
||
|
} else {
|
||
|
const contentFile = JSON.parse(fs.readFileSync(filePath, "utf8"));
|
||
|
patterns.forEach((pattern) => deleteNestedProperty(contentFile, pattern));
|
||
|
fs.writeFileSync(filePath, JSON.stringify(contentFile));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function deleteNestedProperty(obj, propertyPath) {
|
||
|
const properties = propertyPath.split(".");
|
||
|
let currentObj = obj;
|
||
|
for (let i = 0; i < properties.length - 1; i++) {
|
||
|
const property = properties[i];
|
||
|
if (currentObj.hasOwnProperty(property)) {
|
||
|
currentObj = currentObj[property];
|
||
|
} else {
|
||
|
return; // Property not found, no need to continue
|
||
|
}
|
||
|
}
|
||
|
delete currentObj[properties[properties.length - 1]];
|
||
|
}
|