forked from angular/angular-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(@angular/cli): name lazy chunks
Before: ``` $ ng build --no-progress Hash: ff03df269349b817eef4 Time: 11202ms chunk {0} 0.chunk.js, 0.chunk.js.map 1.61 kB {1} {3} [rendered] chunk {1} 1.chunk.js, 1.chunk.js.map 1.46 kB {0} {3} [rendered] chunk {2} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {6} [initial] [rendered] chunk {3} main.bundle.js, main.bundle.js.map (main) 6.38 kB {5} [initial] [rendered] chunk {4} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {6} [initial] [rendered] chunk {5} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.16 MB [initial] [rendered] chunk {6} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered] ``` After: ``` $ ng build --no-progress Hash: 2bc12a89f40f3b4818b5 Time: 9613ms chunk {feature.module} feature.module.chunk.js, feature.module.chunk.js.map 1.46 kB {lazy.module} {main} [rendered] chunk {inline} inline.bundle.js, inline.bundle.js.map (inline) 0 bytes [entry] [rendered] chunk {lazy.module} lazy.module.chunk.js, lazy.module.chunk.js.map 1.61 kB {feature.module} {main} [rendered] chunk {main} main.bundle.js, main.bundle.js.map (main) 6.38 kB {vendor} [initial] [rendered] chunk {polyfills} polyfills.bundle.js, polyfills.bundle.js.map (polyfills) 160 kB {inline} [initial] [rendered] chunk {styles} styles.bundle.js, styles.bundle.js.map (styles) 10.5 kB {inline} [initial] [rendered] chunk {vendor} vendor.bundle.js, vendor.bundle.js.map (vendor) 2.16 MB [initial] [rendered] ``` Fix angular#6700
- Loading branch information
1 parent
64e6b94
commit de63632
Showing
6 changed files
with
60 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
41 changes: 41 additions & 0 deletions
41
packages/@angular/cli/plugins/named-lazy-chunks-webpack-plugin.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
import * as webpack from 'webpack'; | ||
|
||
|
||
// This just extends webpack.NamedChunksPlugin to prevent name collisions. | ||
export class NamedLazyChunksWebpackPlugin extends webpack.NamedChunksPlugin { | ||
constructor() { | ||
const nameMap = new Map(); | ||
// Append a dot and number if the name already exists. | ||
const getNextName = (baseName: string) => { | ||
let num: number | null = null; | ||
const name = () => num !== null ? `${baseName}.${num}` : baseName; | ||
while (nameMap.has(name())) { | ||
num = num ? num++ : 0; | ||
} | ||
nameMap.set(name(), true); | ||
return name(); | ||
}; | ||
|
||
const nameResolver = (chunk: any) => { | ||
// Entry chunks have a name already, use it. | ||
if (chunk.name) { | ||
return chunk.name; | ||
} | ||
|
||
// Try to figure out if it's a lazy loaded route. | ||
if (chunk.blocks | ||
&& chunk.blocks.length > 0 | ||
&& chunk.blocks[0].dependencies | ||
&& chunk.blocks[0].dependencies.length > 0 | ||
&& chunk.blocks[0].dependencies[0].lazyRouteChunkName | ||
) { | ||
// lazyRouteChunkName was added by @ngtools/webpack. | ||
return getNextName(chunk.blocks[0].dependencies[0].lazyRouteChunkName); | ||
} | ||
|
||
return null; | ||
}; | ||
|
||
super(nameResolver); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import * as webpack from 'webpack'; | ||
|
||
declare module 'webpack' { | ||
export class NamedChunksPlugin { | ||
constructor(nameResolver: (chunk: any) => string | null): NamedChunksPlugin; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters