Skip to content

Commit 8da531e

Browse files
committed
Replace optimize-css-assets-webpack-plugin by css-minimizer-webpack-plugin
1 parent f3843ca commit 8da531e

File tree

8 files changed

+127
-109
lines changed

8 files changed

+127
-109
lines changed

Diff for: index.js

+7-10
Original file line numberDiff line numberDiff line change
@@ -192,25 +192,22 @@ class Encore {
192192
}
193193

194194
/**
195-
* Allows you to configure the options passed to the optimize-css-assets-webpack-plugin.
196-
* A list of available options can be found at https://github.com/NMFR/optimize-css-assets-webpack-plugin
195+
* Allows you to configure the options passed to the css-minimizer-webpack-plugin.
196+
* A list of available options can be found at https://github.com/webpack-contrib/css-minimizer-webpack-plugin
197197
*
198198
* For example:
199199
*
200200
* ```
201-
* Encore.configureOptimizeCssPlugin((options) => {
202-
* options.cssProcessor = require('cssnano');
203-
* options.cssProcessorPluginOptions = {
204-
* preset: ['default', { discardComments: { removeAll: true } }],
205-
* }
201+
* Encore.configureCssMinimizerPlugin((options) => {
202+
* options.parallel = false;
206203
* })
207204
* ```
208205
*
209-
* @param {function} optimizeCssPluginOptionsCallback
206+
* @param {function} cssMinimizerPluginOptionsCallback
210207
* @returns {Encore}
211208
*/
212-
configureOptimizeCssPlugin(optimizeCssPluginOptionsCallback = () => {}) {
213-
webpackConfig.configureOptimizeCssPlugin(optimizeCssPluginOptionsCallback);
209+
configureCssMinimizerPlugin(cssMinimizerPluginOptionsCallback = () => {}) {
210+
webpackConfig.configureCssMinimizerPlugin(cssMinimizerPluginOptionsCallback);
214211

215212
return this;
216213
}

Diff for: lib/WebpackConfig.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ class WebpackConfig {
187187
this.friendlyErrorsPluginOptionsCallback = () => {};
188188
this.manifestPluginOptionsCallback = () => {};
189189
this.terserPluginOptionsCallback = () => {};
190-
this.optimizeCssPluginOptionsCallback = () => {};
190+
this.cssMinimizerPluginOptionsCallback = () => {};
191191
this.notifierPluginOptionsCallback = () => {};
192192
}
193193

@@ -299,12 +299,12 @@ class WebpackConfig {
299299
this.terserPluginOptionsCallback = terserPluginOptionsCallback;
300300
}
301301

302-
configureOptimizeCssPlugin(optimizeCssPluginOptionsCallback = () => {}) {
303-
if (typeof optimizeCssPluginOptionsCallback !== 'function') {
304-
throw new Error('Argument 1 to configureOptimizeCssPlugin() must be a callback function');
302+
configureCssMinimizerPlugin(cssMinimizerPluginOptionsCallback = () => {}) {
303+
if (typeof cssMinimizerPluginOptionsCallback !== 'function') {
304+
throw new Error('Argument 1 to configureCssMinimizerPlugin() must be a callback function');
305305
}
306306

307-
this.optimizeCssPluginOptionsCallback = optimizeCssPluginOptionsCallback;
307+
this.cssMinimizerPluginOptionsCallback = cssMinimizerPluginOptionsCallback;
308308
}
309309

310310
/**

Diff for: lib/plugins/optimize-css-assets.js

+5-17
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,19 @@
1010
'use strict';
1111

1212
const WebpackConfig = require('../WebpackConfig'); //eslint-disable-line no-unused-vars
13-
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
13+
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
1414
const applyOptionsCallback = require('../utils/apply-options-callback');
1515

1616
/**
1717
* @param {WebpackConfig} webpackConfig
1818
* @return {object}
1919
*/
2020
module.exports = function(webpackConfig) {
21-
const optimizePluginOptions = {
22-
// see: https://github.com/NMFR/optimize-css-assets-webpack-plugin/issues/53#issuecomment-400294569
23-
// we always use annotations: true, which is the setting if you're
24-
// outputting to a separate file. This plugin is only
25-
// used in production, and, in production, we always use the
26-
// source-map option (a separate file) in config-generator.
27-
cssProcessorOptions: {}
21+
const minimizerPluginOptions = {
22+
sourceMap: webpackConfig.useSourceMaps
2823
};
2924

30-
if (webpackConfig.useSourceMaps) {
31-
optimizePluginOptions.cssProcessorOptions.map = {
32-
inline: false,
33-
annotation: true,
34-
};
35-
}
36-
37-
return new OptimizeCSSAssetsPlugin(
38-
applyOptionsCallback(webpackConfig.optimizeCssPluginOptionsCallback, optimizePluginOptions)
25+
return new CssMinimizerPlugin(
26+
applyOptionsCallback(webpackConfig.cssMinimizerPluginOptionsCallback, minimizerPluginOptions)
3927
);
4028
};

Diff for: package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@
3333
"chalk": "^4.0.0",
3434
"clean-webpack-plugin": "^3.0.0",
3535
"css-loader": "^3.5.2",
36+
"css-minimizer-webpack-plugin": "^1.1.5",
3637
"fast-levenshtein": "^2.0.6",
3738
"file-loader": "^6.0.0",
3839
"friendly-errors-webpack-plugin": "^2.0.0-beta.1",
3940
"loader-utils": "^2.0.0",
4041
"mini-css-extract-plugin": "^1.0.0",
41-
"optimize-css-assets-webpack-plugin": "^5.0.4",
4242
"pkg-up": "^3.1.0",
4343
"pretty-error": "^2.1.1",
4444
"resolve-url-loader": "^3.1.2",

Diff for: test/WebpackConfig.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -322,21 +322,21 @@ describe('WebpackConfig object', () => {
322322
});
323323
});
324324

325-
describe('configureOptimizeCssPlugin', () => {
325+
describe('configureCssMinimizerPlugin', () => {
326326
it('Setting callback', () => {
327327
const config = createConfig();
328328
const callback = () => {};
329-
config.configureOptimizeCssPlugin(callback);
329+
config.configureCssMinimizerPlugin(callback);
330330

331-
expect(config.optimizeCssPluginOptionsCallback).to.equal(callback);
331+
expect(config.cssMinimizerPluginOptionsCallback).to.equal(callback);
332332
});
333333

334334
it('Setting invalid callback argument', () => {
335335
const config = createConfig();
336336

337337
expect(() => {
338-
config.configureOptimizeCssPlugin('foo');
339-
}).to.throw('Argument 1 to configureOptimizeCssPlugin() must be a callback function');
338+
config.configureCssMinimizerPlugin('foo');
339+
}).to.throw('Argument 1 to configureCssMinimizerPlugin() must be a callback function');
340340
});
341341
});
342342

Diff for: test/functional.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -2291,13 +2291,13 @@ module.exports = {
22912291
config.setPublicPath('/build');
22922292
config.copyFiles({ from: './copy' });
22932293

2294-
// By default the optimize-css-assets-webpack-plugin will
2294+
// By default the css-minimizer-webpack-plugin will
22952295
// run on ALL emitted CSS files, which includes the ones
22962296
// handled by `Encore.copyFiles()`.
22972297
// We disable it for this test since our CSS file will
22982298
// not be valid and can't be handled by this plugin.
2299-
config.configureOptimizeCssPlugin(options => {
2300-
options.assetNameRegExp = /^$/;
2299+
config.configureCssMinimizerPlugin(options => {
2300+
options.include = /^$/;
23012301
});
23022302

23032303
// By default the terser-webpack-plugin will run on
@@ -2353,13 +2353,13 @@ module.exports = {
23532353
pattern: /\.(?!(css|js)$)([^.]+$)/
23542354
});
23552355

2356-
// By default the optimize-css-assets-webpack-plugin will
2356+
// By default the css-minimizer-webpack-plugin will
23572357
// run on ALL emitted CSS files, which includes the ones
23582358
// handled by `Encore.copyFiles()`.
23592359
// We disable it for this test since our CSS file will
23602360
// not be valid and can't be handled by this plugin.
2361-
config.configureOptimizeCssPlugin(options => {
2362-
options.assetNameRegExp = /^$/;
2361+
config.configureCssMinimizerPlugin(options => {
2362+
options.include = /^$/;
23632363
});
23642364

23652365
// By default the terser-webpack-plugin will run on

Diff for: test/index.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -416,10 +416,10 @@ describe('Public API', () => {
416416

417417
});
418418

419-
describe('configureOptimizeCssPlugin', () => {
419+
describe('configureCssMinimizerPlugin', () => {
420420

421421
it('should return the API object', () => {
422-
const returnedValue = api.configureOptimizeCssPlugin(() => {});
422+
const returnedValue = api.configureCssMinimizerPlugin(() => {});
423423
expect(returnedValue).to.equal(api);
424424
});
425425

0 commit comments

Comments
 (0)