Skip to content

Commit b4abe6d

Browse files
filipesilvaBrocco
authored andcommitted
fix(@angular/cli): put vendor ngfactory in vendor chunk
Currently vendor Angular libraries will have their *.ngfactory.ts in main.ts when building with `--aot`. The easiest way to see this is with `source-map-explorer. This PR correctly puts them in vendor.ts.
1 parent 872737b commit b4abe6d

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

packages/@angular/cli/models/webpack-configs/browser.ts

+7-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ export function getBrowserConfig(wco: WebpackConfigOptions) {
1212
const { projectRoot, buildOptions, appConfig } = wco;
1313

1414
const appRoot = path.resolve(projectRoot, appConfig.root);
15-
const nodeModules = path.resolve(projectRoot, 'node_modules');
1615

1716
let extraPlugins: any[] = [];
1817

@@ -23,10 +22,16 @@ export function getBrowserConfig(wco: WebpackConfigOptions) {
2322
]);
2423

2524
if (buildOptions.vendorChunk) {
25+
// Separate modules from node_modules into a vendor chunk.
26+
const nodeModules = path.resolve(projectRoot, 'node_modules');
27+
// --aot puts the generated *.ngfactory.ts in src/$$_gendir/node_modules.
28+
const genDirNodeModules = path.resolve(appRoot, '$$_gendir', 'node_modules');
29+
2630
extraPlugins.push(new webpack.optimize.CommonsChunkPlugin({
2731
name: 'vendor',
2832
chunks: ['main'],
29-
minChunks: (module: any) => module.resource && module.resource.startsWith(nodeModules)
33+
minChunks: (module: any) => module.resource &&
34+
(module.resource.startsWith(nodeModules) || module.resource.startsWith(genDirNodeModules))
3035
}));
3136
}
3237

packages/@angular/cli/tasks/eject.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,13 @@ class JsonWebpackSerializer {
3939
};
4040
public variables: {[name: string]: string} = {
4141
'nodeModules': `path.join(process.cwd(), 'node_modules')`,
42+
'genDirNodeModules':
43+
`path.join(process.cwd(), '${this._appRoot}', '$$_gendir', 'node_modules')`,
4244
};
4345
private _postcssProcessed = false;
4446

4547

46-
constructor(private _root: string, private _dist: string) {}
48+
constructor(private _root: string, private _dist: string, private _appRoot: string) {}
4749

4850
private _escape(str: string) {
4951
return '\uFF01' + str + '\uFF01';
@@ -398,7 +400,7 @@ export default Task.extend({
398400
}
399401

400402
const webpackConfig = new NgCliWebpackConfig(runTaskOptions, appConfig).buildConfig();
401-
const serializer = new JsonWebpackSerializer(process.cwd(), outputPath);
403+
const serializer = new JsonWebpackSerializer(process.cwd(), outputPath, appConfig.root);
402404
const output = serializer.serialize(webpackConfig);
403405
const webpackConfigStr = `${serializer.generateVariables()}\n\nmodule.exports = ${output};\n`;
404406

0 commit comments

Comments
 (0)