cssclasscrafter
Version:
CSSClassCrafter is an npm library that enables developers to dynamically generate CSS classes based on user-defined configuration files. With a simple JSON format for specifying styles, it streamlines the styling process, allowing for easy customization a
53 lines (41 loc) • 1.74 kB
JavaScript
import fs from 'fs';
import { defaultConfig } from '../default.config.mjs';
import { startLoading, stopLoading } from './LodingAnimation.mjs';
const configFileName = "csscrafter.config.json";
function mergeConfigs(existing, defaultConfig) {
const updatedConfig = { ...defaultConfig };
Object.keys(existing).forEach(key => {
if (typeof existing[key] === 'object' && !Array.isArray(existing[key])) {
updatedConfig[key] = mergeConfigs(existing[key], defaultConfig[key]);
} else {
updatedConfig[key] = existing[key];
}
});
return updatedConfig;
}
export async function init() {
const spinner = startLoading('Processing...', 'bouncingBall');
if (fs.existsSync(configFileName)) {
const existingConfig = JSON.parse(fs.readFileSync(configFileName, "utf8"));
const isSameConfig = JSON.stringify(existingConfig) === JSON.stringify(defaultConfig);
if (isSameConfig) {
stopLoading(spinner, 'warn', 'Config file is already up-to-date. Skipping initialization.');
return;
} else {
const updatedConfig = mergeConfigs(existingConfig, defaultConfig);
fs.writeFileSync(
configFileName,
JSON.stringify(updatedConfig, null, 2),
"utf8"
);
stopLoading(spinner, 'success', 'Config file updated with new properties from the default configuration.');
return;
}
}
fs.writeFileSync(
configFileName,
JSON.stringify(defaultConfig, null, 2),
"utf8"
);
stopLoading(spinner, 'success', 'Config file created successfully!');
}