62 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Optimize CSS Assets Webpack Plugin
 | |
| 
 | |
| A Webpack plugin to optimize \ minimize CSS assets.
 | |
| 
 | |
| ## What does the plugin do?
 | |
| 
 | |
| It will search for CSS assets during the Webpack build and will optimize \ minimize the CSS (by default it uses [cssnano](http://github.com/ben-eb/cssnano) but a custom CSS processor can be specified).
 | |
| 
 | |
| ### Solves [extract-text-webpack-plugin](http://github.com/webpack/extract-text-webpack-plugin) CSS duplication problem:
 | |
| 
 | |
| Since [extract-text-webpack-plugin](http://github.com/webpack/extract-text-webpack-plugin) only bundles (merges) text chunks, if it's used to bundle CSS, the bundle might have duplicate entries (chunks can be duplicate free but when merged, duplicate CSS can be created).
 | |
| 
 | |
| ## Installation:
 | |
| 
 | |
| Using npm:
 | |
| ```shell
 | |
| $ npm install --save-dev optimize-css-assets-webpack-plugin
 | |
| ```
 | |
| 
 | |
| > :warning: For webpack v3 or below please use `optimize-css-assets-webpack-plugin@3.2.0`. The `optimize-css-assets-webpack-plugin@4.0.0` version and above supports webpack v4.
 | |
| 
 | |
| ## Configuration:
 | |
| 
 | |
| The plugin can receive the following options (all of them are optional):
 | |
| * `assetNameRegExp`: A regular expression that indicates the names of the assets that should be optimized \ minimized. The regular expression provided is run against the filenames of the files exported by the `ExtractTextPlugin` instances in your configuration, not the filenames of your source CSS files. Defaults to `/\.css$/g`
 | |
| * `cssProcessor`: The CSS processor used to optimize \ minimize the CSS, defaults to [`cssnano`](http://github.com/ben-eb/cssnano). This should be a function that follows `cssnano.process` interface (receives a CSS and options parameters and returns a Promise).
 | |
| * `cssProcessorOptions`: The options passed to the `cssProcessor`, defaults to `{}`
 | |
| * `cssProcessorPluginOptions`: The plugin options passed to the `cssProcessor`, defaults to `{}`
 | |
| * `canPrint`: A boolean indicating if the plugin can print messages to the console, defaults to `true`
 | |
| 
 | |
| ## Example:
 | |
| 
 | |
| ``` javascript
 | |
| var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
 | |
| module.exports = {
 | |
|   module: {
 | |
|     rules: [
 | |
|       {
 | |
|         test: /\.css$/,
 | |
|         loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
 | |
|       }
 | |
|     ]
 | |
|   },
 | |
|   plugins: [
 | |
|     new ExtractTextPlugin('styles.css'),
 | |
|     new OptimizeCssAssetsPlugin({
 | |
|       assetNameRegExp: /\.optimize\.css$/g,
 | |
|       cssProcessor: require('cssnano'),
 | |
|       cssProcessorPluginOptions: {
 | |
|         preset: ['default', { discardComments: { removeAll: true } }],
 | |
|       },
 | |
|       canPrint: true
 | |
|     })
 | |
|   ]
 | |
| };
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| MIT (http://www.opensource.org/licenses/mit-license.php)
 | |
| 
 |