UNPKG

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
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!'); }