Skip to content

Commit a23607c

Browse files
committed
Update to use new ChunkGraph, ModuleGraph APIs
1 parent 0f33cf2 commit a23607c

File tree

2 files changed

+38
-25
lines changed

2 files changed

+38
-25
lines changed

src/webpack/util/getAffectedModuleIds.ts

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import Chunk from 'webpack/lib/Chunk'
2+
import ChunkGraph from 'webpack/lib/ChunkGraph'
23
import Module from 'webpack/lib/Module'
4+
import ModuleGraph from 'webpack/lib/ModuleGraph'
35

46
type ModuleMap = {
57
[key: string]: Module
@@ -12,6 +14,7 @@ const isBuilt = (module: Module): boolean => module.built
1214
const getId = (module: any): number | string => module.id
1315

1416
const affectedModules = (
17+
chunkGraph: ChunkGraph,
1518
map: ModuleMap,
1619
usageMap: ModuleUsageMap,
1720
affected: ModuleMap,
@@ -23,13 +26,13 @@ const affectedModules = (
2326
}
2427
// module is identified as affected by this function call
2528
const module = map[moduleId]
26-
affected[module.id] = module // eslint-disable-line no-param-reassign
29+
affected[moduleId] = module // eslint-disable-line no-param-reassign
2730

2831
// next we need to mark all usages aka parents also as affected
29-
const usages = usageMap[module.id]
32+
const usages = usageMap[moduleId]
3033
if (typeof usages !== 'undefined') {
3134
const ids = Object.keys(usages)
32-
ids.forEach((id: string) => affectedModules(map, usageMap, affected, id))
35+
ids.forEach((id: string) => affectedModules(chunkGraph, map, usageMap, affected, id))
3336
}
3437
}
3538

@@ -39,9 +42,9 @@ const affectedModules = (
3942
* [moduleId]: Module
4043
* }
4144
*/
42-
const buildModuleMap = (modules: Set<Module>): ModuleMap => {
45+
const buildModuleMap = (chunkGraph: ChunkGraph, modules: Set<Module>): ModuleMap => {
4346
const moduleMap = Array.from(modules).reduce(
44-
(memo, module: Module) => ({ ...memo, [module.id]: module }),
47+
(memo, module: Module) => ({ ...memo, [chunkGraph.getModuleId(module)]: module }),
4548
{}
4649
)
4750
return moduleMap
@@ -62,7 +65,9 @@ const buildModuleMap = (modules: Set<Module>): ModuleMap => {
6265
*/
6366
const buildModuleUsageMap = (
6467
chunks: Set<Chunk>,
65-
modules: Set<Module>
68+
chunkGraph: ChunkGraph,
69+
modules: Set<Module>,
70+
moduleGraph: ModuleGraph
6671
): ModuleUsageMap => {
6772
// build a map of all modules with their parent
6873
// {
@@ -74,15 +79,17 @@ const buildModuleUsageMap = (
7479
const moduleUsageMap: ModuleUsageMap = Array.from(modules).reduce(
7580
(memo, module: Module) => {
7681
module.dependencies.forEach(dependency => {
77-
const dependentModule = dependency.module
82+
const dependentModule = moduleGraph.getModule(dependency)
7883

7984
if (!dependentModule) {
8085
return
8186
}
82-
if (typeof memo[dependentModule.id] === 'undefined') {
83-
memo[dependentModule.id] = {} // eslint-disable-line no-param-reassign
87+
const dependentModuleId = chunkGraph.getModuleId(dependentModule)
88+
if (typeof memo[dependentModuleId] === 'undefined') {
89+
memo[dependentModuleId] = {} // eslint-disable-line no-param-reassign
8490
}
85-
memo[dependentModule.id][module.id] = module // eslint-disable-line no-param-reassign
91+
const moduleId = chunkGraph.getModuleId(module)
92+
memo[dependentModuleId][moduleId] = module // eslint-disable-line no-param-reassign
8693
})
8794
return memo
8895
},
@@ -101,8 +108,9 @@ const buildModuleUsageMap = (
101108
return memo
102109
}, {})
103110
Array.from(modules).reduce((memo, module: Module) => {
104-
module.getChunks().forEach((chunk: Chunk) => {
105-
memo[chunk.id][module.id] = module // eslint-disable-line no-param-reassign
111+
chunkGraph.getModuleChunksIterable(module).forEach((chunk: Chunk) => {
112+
const moduleId = chunkGraph.getModuleId(module)
113+
memo[chunk.id][moduleId] = module // eslint-disable-line no-param-reassign
106114
})
107115
return memo
108116
}, chunkModuleMap)
@@ -117,10 +125,12 @@ const buildModuleUsageMap = (
117125
// and mark all modules of this chunk as a direct dependency of the original module
118126
Object.values(chunkModuleMap[chunkId] as ModuleMap).forEach(
119127
(childModule: any) => {
120-
if (typeof moduleUsageMap[childModule.id] === 'undefined') {
121-
moduleUsageMap[childModule.id] = {}
128+
const childModuleId = chunkGraph.getModuleId(childModule)
129+
if (typeof moduleUsageMap[childModuleId] === 'undefined') {
130+
moduleUsageMap[childModuleId] = {}
122131
}
123-
moduleUsageMap[childModule.id][module.id] = module
132+
const moduleId = chunkGraph.getModuleId(module)
133+
moduleUsageMap[childModuleId][moduleId] = module
124134
}
125135
)
126136
})
@@ -141,16 +151,19 @@ const buildModuleUsageMap = (
141151
*/
142152
export default function getAffectedModuleIds(
143153
chunks: Set<Chunk>,
144-
modules: Set<Module>
154+
chunkGraph: ChunkGraph,
155+
modules: Set<Module>,
156+
moduleGraph: ModuleGraph
145157
): Array<number | string> {
146-
const moduleMap: ModuleMap = buildModuleMap(modules)
147-
const moduleUsageMap: ModuleUsageMap = buildModuleUsageMap(chunks, modules)
158+
const moduleMap: ModuleMap = buildModuleMap(chunkGraph, modules)
159+
const moduleUsageMap: ModuleUsageMap = buildModuleUsageMap(chunks, chunkGraph, modules, moduleGraph)
148160

149161
const builtModules = Array.from(modules).filter(isBuilt)
150162
const affectedMap: ModuleMap = {}
163+
const moduleId: string = chunkGraph.getModuleId(module)
151164
builtModules.forEach((module: Module) =>
152-
affectedModules(moduleMap, moduleUsageMap, affectedMap, module.id)
165+
affectedModules(chunkGraph, moduleMap, moduleUsageMap, affectedMap, moduleId)
153166
)
154167

155-
return Object.values(affectedMap).map(getId)
168+
return Object.values(affectedMap).map(chunkGraph.getModuleId)
156169
}

src/webpack/util/getBuildStats.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ export default function getBuildStats(
1515
stats: Stats,
1616
outputPath: string
1717
): BuildStats {
18-
const { chunks, chunkGroups, modules } = stats.compilation
18+
const { chunks, chunkGraph, chunkGroups, modules, moduleGraph } = stats.compilation
1919

2020
const sortedChunks = sortChunks(chunks, chunkGroups)
21-
const affectedModules = getAffectedModuleIds(chunks, modules)
21+
const affectedModules = getAffectedModuleIds(chunks, chunkGraph, modules, moduleGraph)
2222

2323
const entries = []
2424
const js = []
@@ -34,9 +34,9 @@ export default function getBuildStats(
3434
}
3535

3636
if (
37-
chunk
38-
.getModules()
39-
.some((module: Module) => affectedModules.indexOf(module.id) !== -1)
37+
chunkGraph
38+
.getChunkModules(chunk)
39+
.some((module: Module) => affectedModules.indexOf(chunkGraph.getModuleId(module)) !== -1)
4040
) {
4141
files.forEach(file => {
4242
if (/\.js$/.test(file)) {

0 commit comments

Comments
 (0)