Clean-CSS provides extensive configuration options through the constructor to control minification behavior, compatibility modes, and output formatting.
const CleanCSS = require('clean-css');
constructor(options?: CleanCSSOptions): CleanCSSCreates a new Clean-CSS instance with the specified configuration options.
Parameters:
options (object, optional) - Configuration object containing minification settingsinterface CleanCSSOptions {
batch?: boolean; // Process multiple inputs without concatenating
compatibility?: string | object; // Browser compatibility mode
format?: string | object; // Output formatting options
inline?: string | string[]; // @import inlining rules
level?: number | object; // Optimization level (0, 1, 2)
rebase?: boolean; // URL rebasing
rebaseTo?: string; // Directory for URL rebasing
returnPromise?: boolean; // Return Promise interface
sourceMap?: boolean; // Generate source maps
sourceMapInlineSources?: boolean; // Embed sources in source map
}batch (boolean, default: false)
true, processes multiple inputs independently without concatenating themcompatibility (string | object, default: 'ie10+')
'*', 'ie11', 'ie10', 'ie9', 'ie8', 'ie7'format (string | object, default: false)
'beautify', 'keep-breaks'level (number | object, default: 1)
0 (no optimization), 1 (property-level), 2 (rule-level)rebase (boolean, default: false)
url() functionstrue when rebaseTo is specifiedrebaseTo (string, default: current directory)
returnPromise (boolean, default: false)
true, minify() method returns a PromisesourceMap (boolean, default: false)
sourceMap propertysourceMapInlineSources (boolean, default: false)
sourcesContent fieldsourceMap is trueinterface AdvancedOptions {
fetch?: object; // Remote resource fetching configuration
inlineRequest?: object; // HTTP request options for remote @imports
inlineTimeout?: number; // Timeout for remote resource fetching
plugins?: PluginObject; // Custom optimization plugins
}fetch (object, optional)
@import stylesheetsinlineRequest (object, optional)
@import rulesheaders: Custom HTTP headers objecthostname: Proxy hostname for requestsport: Proxy port numbertimeout: Request timeout (overridden by inlineTimeout)rejectUnauthorized: SSL certificate validation (boolean)inlineTimeout (number, default: 5000)
@import rules are left as-isplugins (object, optional)
const CleanCSS = require('clean-css');
// Simple minification with level 1 optimizations
const minifier = new CleanCSS({ level: 1 });
// Advanced minification with level 2 optimizations
const advanced = new CleanCSS({
level: 2,
format: 'beautify',
sourceMap: true
});const batchMinifier = new CleanCSS({
batch: true,
level: 2
});
const inputs = {
'styles.css': { styles: 'a { color: red; }' },
'theme.css': { styles: 'body { margin: 0; }' }
};
const results = batchMinifier.minify(inputs);
// Returns: { 'styles.css': MinifyResult, 'theme.css': MinifyResult }const promiseMinifier = new CleanCSS({
returnPromise: true,
level: 2
});
promiseMinifier.minify('a { color: #ffffff; }')
.then(result => {
console.log(result.styles); // 'a{color:#fff}'
})
.catch(errors => {
console.error(errors);
});const rebaseMinifier = new CleanCSS({
rebase: true,
rebaseTo: '/assets/css/'
});
const css = "body { background: url('../images/bg.jpg'); }";
const result = rebaseMinifier.minify(css);
// URLs rebased relative to /assets/css/const sourceMapMinifier = new CleanCSS({
sourceMap: true,
sourceMapInlineSources: true
});
const result = sourceMapMinifier.minify(css, inputSourceMap);
console.log(result.sourceMap); // Generated source map objectconst remoteMinifier = new CleanCSS({
inline: 'remote',
inlineTimeout: 10000, // 10 second timeout
inlineRequest: {
headers: {
'User-Agent': 'CleanCSS/5.3.3',
'Accept': 'text/css,*/*;q=0.1',
'Cache-Control': 'no-cache'
},
rejectUnauthorized: false // For self-signed certificates
}
});
// Process CSS with remote @imports
const cssWithRemoteImports = `
@import url("https://fonts.googleapis.com/css2?family=Roboto");
@import "https://cdn.example.com/normalize.css";
body { font-family: 'Roboto', sans-serif; }
`;
const result = remoteMinifier.minify(cssWithRemoteImports);const proxyMinifier = new CleanCSS({
inline: 'remote',
inlineRequest: {
hostname: 'proxy.company.com', // Proxy server
port: 8080, // Proxy port
headers: {
'Proxy-Authorization': 'Basic ' + Buffer.from('user:pass').toString('base64'),
'User-Agent': 'CleanCSS via Proxy'
}
},
inlineTimeout: 15000
});