color-cleaner
Version:
A CLI tool to clean and consolidate colors in your project files.
41 lines (36 loc) • 1.49 kB
JavaScript
import { glob } from 'glob';
import { promises as fs } from 'fs';
import Color from 'color';
const getAllFiles = async (config, currentPath) => {
const patterns = config.fileTypes.map(ext => `**/*.${ext}`);
const files = await glob(patterns, {
cwd: currentPath,
ignore: config.skipNodeModules ? ['**/node_modules/**', '**/dist/**'] : ['**/dist/**'],
absolute: true
});
const fileContents = await Promise.all(
files.map(async (filePath) => {
try {
const content = await fs.readFile(filePath, 'utf-8');
return {
path: filePath,
content
};
} catch (error) {
console.error(`Error reading file ${filePath}:`, error);
return null;
}
})
);
return fileContents.filter(Boolean);
};
const createPallet = async (colorMap, outputPath = 'colors.css') => {
const sortedEntries = Object.entries(colorMap).sort((a, b) => {
const brightnessA = Color(a[1]).luminosity();
const brightnessB = Color(b[1]).luminosity();
return brightnessA - brightnessB;
});
const cssContent = `:root {\n${sortedEntries.map(([name, value]) => ` --${name}: ${value};`).join('\n')}\n}`.replace(/----/g, '--').replace(/\\n/g, '\n');
await fs.writeFile(outputPath, cssContent, 'utf-8');
};
export { getAllFiles, createPallet };