-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.js
35 lines (31 loc) · 832 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* Author: Lucas Viñals
*/
const { set } = require('lodash');
class ChangeExtension {
constructor(options = {}) {
this.extensions = options.extensions || [ 'js', 'css' ];
this.compressionMethod = options.compressionMethod || 'gz';
}
Change(htmlData) {
this.extensions.map((extension) =>
set(
htmlData,
`assets[${ extension }]`,
htmlData.assets[extension].map((name) => `${ name }.${ this.compressionMethod }`)
)
);
}
apply(compiler) {
return compiler.plugin(
'compilation',
(compilation) =>
compilation.plugin(
'html-webpack-plugin-before-html-processing',
(htmlPluginData, callbackHTMLData) =>
callbackHTMLData(null, this.Change(htmlPluginData))
)
);
}
}
module.exports = ChangeExtension;