未验证 提交 c2c634ca 编写于 作者: J Joe Haddad 提交者: GitHub

Use `chunkGroup` request over `rawRequest` for loadable manifest (#6993)

上级 a863a720
......@@ -27,58 +27,51 @@ function buildManifest (compiler, compilation) {
let context = compiler.options.context
let manifest = {}
compilation.chunks.forEach(chunk => {
// If chunk is not an entry point skip them
if (chunk.hasEntryModule()) {
const dynamicChunks = chunk.getAllAsyncChunks()
if (dynamicChunks.size !== 0) {
for (const dynamicChunk of dynamicChunks) {
for (const file of dynamicChunk.files) {
// If it doesn't end in `.js` Next.js can't handle it right now.
if (!file.match(/\.js$/) || !file.match(/^static\/chunks\//)) {
continue
}
compilation.chunkGroups.forEach(chunkGroup => {
if (chunkGroup.isInitial()) {
return
}
let publicPath = url.resolve(
compilation.outputOptions.publicPath || '',
file
)
chunkGroup.origins.forEach(chunkGroupOrigin => {
const { request } = chunkGroupOrigin
for (const module of dynamicChunk.modulesIterable) {
let id = module.id
let name =
typeof module.libIdent === 'function'
? module.libIdent({ context })
: null
chunkGroup.chunks.forEach(chunk => {
chunk.files.forEach(file => {
if (!file.match(/\.js$/) || !file.match(/^static\/chunks\//)) {
return
}
let currentModule = module
if (module.constructor.name === 'ConcatenatedModule') {
currentModule = module.rootModule
}
if (!manifest[currentModule.rawRequest]) {
manifest[currentModule.rawRequest] = []
}
let publicPath = url.resolve(
compilation.outputOptions.publicPath || '',
file
)
// Avoid duplicate files
if (
manifest[currentModule.rawRequest].some(
item => item.file === file
)
) {
continue
}
for (const module of chunk.modulesIterable) {
let id = module.id
let name =
typeof module.libIdent === 'function'
? module.libIdent({ context })
: null
manifest[currentModule.rawRequest].push({
id,
name,
file,
publicPath
})
if (!manifest[request]) {
manifest[request] = []
}
// Avoid duplicate files
if (manifest[request].some(item => item.file === file)) {
continue
}
manifest[request].push({
id,
name,
file,
publicPath
})
}
}
}
}
})
})
})
})
manifest = Object.keys(manifest)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册