@fe-fast/unused-css-pruner
Version:
A powerful CSS pruning tool that removes unused styles with support for dynamic class names, CSS-in-JS, and component-level analysis
49 lines • 2.14 kB
JavaScript
import { analyzeCSSUsage, cleanCSS } from '../index.js';
import path from 'path';
import fs from 'fs/promises';
export function cssPruner(options = {}) {
const { cssFiles = ['dist/**/*.css'], sourceDirectories = ['src'], outputDir = 'dist', mode = 'analyze', config = {}, onAnalysisComplete } = options;
return {
name: 'css-pruner',
async writeBundle() {
try {
console.log('🔍 CSS Pruner: Starting analysis...');
if (mode === 'analyze') {
const result = await analyzeCSSUsage({
cssFiles,
sourceDirectories,
config
});
console.log(`📊 Analysis complete: ${result.unusedSelectors.length} unused selectors found`);
if (onAnalysisComplete) {
onAnalysisComplete(result);
}
// Generate report
if (config.reportFormat === 'json' && config.outputFile) {
await fs.writeFile(path.resolve(config.outputFile), JSON.stringify(result, null, 2));
console.log(`📄 Report saved to: ${config.outputFile}`);
}
}
else if (mode === 'clean') {
const { result, cleanedFiles } = await cleanCSS({
cssFiles,
sourceDirectories,
outputDir,
config
});
console.log(`✨ CSS cleaned: ${result.unusedSelectors.length} selectors removed`);
console.log(`📁 Files processed: ${cleanedFiles.length}`);
if (onAnalysisComplete) {
onAnalysisComplete({ result, cleanedFiles });
}
}
}
catch (error) {
console.error('❌ CSS Pruner error:', error);
throw error;
}
}
};
}
export default cssPruner;
//# sourceMappingURL=rollup.js.map