UNPKG

@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
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