1 | const uglifier = require('./lib/uglifier');
|
2 |
|
3 | function sourceMapError(lib) {
|
4 | return `You should not pass options.${lib}.sourceMap, did you mean options.sourceMap?`;
|
5 | }
|
6 |
|
7 | function FasterUglifyPlugin(options) {
|
8 | if (options.uglifyJS && options.uglifyES) {
|
9 | throw new TypeError('You cannot use both uglifyJS and uglifyES for the same plugin.');
|
10 | }
|
11 |
|
12 | if (options.uglifyJS && options.uglifyJS.sourceMap) {
|
13 | throw new TypeError(sourceMapError('uglifyJS'));
|
14 | }
|
15 |
|
16 | if (options.uglifyES && options.uglifyES.sourceMap) {
|
17 | throw new TypeError(sourceMapError('uglifyES'));
|
18 | }
|
19 | this.options = options;
|
20 |
|
21 | if (!(this.options.uglifyJS || this.options.uglifyES)) {
|
22 | this.options.uglifyJS = {};
|
23 | }
|
24 | }
|
25 |
|
26 | FasterUglifyPlugin.prototype.apply = function apply(compiler) {
|
27 | compiler.plugin('compilation', compilation => {
|
28 | compilation.plugin('optimize-chunk-assets', (chunks, callback) => {
|
29 | uglifier.processAssets(compilation, this.options).then(() => {
|
30 | callback();
|
31 | });
|
32 | });
|
33 | });
|
34 |
|
35 | compiler.plugin('done', () => {
|
36 | uglifier.pruneCache(this.options);
|
37 | });
|
38 | };
|
39 |
|
40 | module.exports = FasterUglifyPlugin;
|