mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
Rewrite combine-asset-plugin using correct event (#3486)
* Speed up next build * Remove comment * Add comment * Add comments
This commit is contained in:
parent
f2989c5739
commit
c23046dc79
|
@ -104,7 +104,8 @@
|
||||||
"webpack-dev-middleware": "1.12.0",
|
"webpack-dev-middleware": "1.12.0",
|
||||||
"webpack-hot-middleware": "2.19.1",
|
"webpack-hot-middleware": "2.19.1",
|
||||||
"write-file-webpack-plugin": "4.2.0",
|
"write-file-webpack-plugin": "4.2.0",
|
||||||
"xss-filters": "1.2.7"
|
"xss-filters": "1.2.7",
|
||||||
|
"uglifyjs-webpack-plugin": "^1.1.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@taskr/babel": "1.1.0",
|
"@taskr/babel": "1.1.0",
|
||||||
|
@ -134,7 +135,6 @@
|
||||||
"react-dom": "16.0.0",
|
"react-dom": "16.0.0",
|
||||||
"standard": "9.0.2",
|
"standard": "9.0.2",
|
||||||
"taskr": "1.1.0",
|
"taskr": "1.1.0",
|
||||||
"uglifyjs-webpack-plugin": "^1.1.1",
|
|
||||||
"wd": "1.4.1"
|
"wd": "1.4.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|
|
@ -11,26 +11,23 @@ export default class CombineAssetsPlugin {
|
||||||
|
|
||||||
apply (compiler) {
|
apply (compiler) {
|
||||||
compiler.plugin('compilation', (compilation) => {
|
compiler.plugin('compilation', (compilation) => {
|
||||||
compilation.plugin('additional-chunk-assets', (chunks) => {
|
// This is triggered after uglify and other optimizers have ran.
|
||||||
|
compilation.plugin('after-optimize-chunk-assets', (chunks) => {
|
||||||
const concat = new ConcatSource()
|
const concat = new ConcatSource()
|
||||||
|
|
||||||
this.input.forEach((name) => {
|
this.input.forEach((name) => {
|
||||||
const asset = compilation.assets[name]
|
const asset = compilation.assets[name]
|
||||||
if (!asset) return
|
if (!asset) return
|
||||||
|
|
||||||
|
// We add each matched asset from this.input to a new bundle
|
||||||
concat.add(asset)
|
concat.add(asset)
|
||||||
|
|
||||||
// We keep existing assets since that helps when analyzing the bundle
|
// The original assets are kept because they show up when analyzing the bundle using webpack-bundle-analyzer
|
||||||
|
// See https://github.com/zeit/next.js/tree/canary/examples/with-webpack-bundle-analyzer
|
||||||
})
|
})
|
||||||
|
|
||||||
compilation.additionalChunkAssets.push(this.output)
|
// Creates a new asset holding the concatted source
|
||||||
compilation.assets[this.output] = concat
|
compilation.assets[this.output] = concat
|
||||||
|
|
||||||
// Register the combined file as an output of the associated chunks
|
|
||||||
chunks.filter((chunk) => {
|
|
||||||
return chunk.files.reduce((prev, file) => prev || this.input.includes(file), false)
|
|
||||||
})
|
|
||||||
.forEach((chunk) => chunk.files.push(this.output))
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue