From ef9607e25cdaf887ad2d6e02a02f539af7de00fd Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Tue, 24 Oct 2017 18:58:56 +0100 Subject: [PATCH] fix(@angular/cli): fix broken vendor chunk default Followup to #8077 Fix #8169 --- packages/@angular/cli/commands/build.ts | 5 ----- packages/@angular/cli/commands/eject.ts | 5 ----- packages/@angular/cli/commands/serve.ts | 5 ----- packages/@angular/cli/models/webpack-config.ts | 15 ++++++++++++--- tests/e2e/tests/build/script-target.ts | 2 +- 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/packages/@angular/cli/commands/build.ts b/packages/@angular/cli/commands/build.ts index d3778a8ab9a7..f6f5ecbcf207 100644 --- a/packages/@angular/cli/commands/build.ts +++ b/packages/@angular/cli/commands/build.ts @@ -215,11 +215,6 @@ const BuildCommand = Command.extend({ Version.assertAngularVersionIs2_3_1OrHigher(this.project.root); Version.assertTypescriptVersion(this.project.root); - // Default vendor chunk to false when build optimizer is on. - if (commandOptions.vendorChunk === undefined) { - commandOptions.vendorChunk = !commandOptions.buildOptimizer; - } - // Force commonjs module format for TS on dev watch builds. if (commandOptions.target === 'development' && commandOptions.watch === true) { commandOptions.forceTsCommonjs = true; diff --git a/packages/@angular/cli/commands/eject.ts b/packages/@angular/cli/commands/eject.ts index 4983d691785f..fa69b6ea8e32 100644 --- a/packages/@angular/cli/commands/eject.ts +++ b/packages/@angular/cli/commands/eject.ts @@ -33,11 +33,6 @@ const EjectCommand = Command.extend({ run: function (commandOptions: EjectTaskOptions) { - // Default vendor chunk to false when build optimizer is on. - if (commandOptions.vendorChunk === undefined) { - commandOptions.vendorChunk = !commandOptions.buildOptimizer; - } - const EjectTask = require('../tasks/eject').default; const ejectTask = new EjectTask({ project: this.project, diff --git a/packages/@angular/cli/commands/serve.ts b/packages/@angular/cli/commands/serve.ts index b4edd15d42f4..d059571e5644 100644 --- a/packages/@angular/cli/commands/serve.ts +++ b/packages/@angular/cli/commands/serve.ts @@ -130,11 +130,6 @@ const ServeCommand = Command.extend({ Version.assertAngularVersionIs2_3_1OrHigher(this.project.root); Version.assertTypescriptVersion(this.project.root); - // Default vendor chunk to false when build optimizer is on. - if (commandOptions.vendorChunk === undefined) { - commandOptions.vendorChunk = !commandOptions.buildOptimizer; - } - // Force commonjs module format for TS on dev builds. if (commandOptions.target === 'development') { commandOptions.forceTsCommonjs = true; diff --git a/packages/@angular/cli/models/webpack-config.ts b/packages/@angular/cli/models/webpack-config.ts index aa88836dba50..ae7065b80cfd 100644 --- a/packages/@angular/cli/models/webpack-config.ts +++ b/packages/@angular/cli/models/webpack-config.ts @@ -108,14 +108,23 @@ export class NgCliWebpackConfig { } }; - const merged = Object.assign({}, targetDefaults[buildOptions.target], buildOptions); + let merged = Object.assign({}, targetDefaults[buildOptions.target], buildOptions); // Use Build Optimizer on prod AOT builds by default when AngularCompilerPlugin is supported. - const buildOptimizer = { + const buildOptimizerDefault = { buildOptimizer: merged.aot && AngularCompilerPlugin.isSupported() }; - return Object.assign({}, buildOptimizer, merged); + merged = Object.assign({}, buildOptimizerDefault, merged); + + // Default vendor chunk to false when build optimizer is on. + const vendorChunkDefault = { + vendorChunk: !merged.buildOptimizer + }; + + merged = Object.assign({}, vendorChunkDefault, merged); + + return merged; } // Fill in defaults from .angular-cli.json diff --git a/tests/e2e/tests/build/script-target.ts b/tests/e2e/tests/build/script-target.ts index 633d770f28a1..f3d847141d30 100644 --- a/tests/e2e/tests/build/script-target.ts +++ b/tests/e2e/tests/build/script-target.ts @@ -9,7 +9,7 @@ export default function () { const compilerOptions = configJson['compilerOptions']; compilerOptions['target'] = 'es2015'; })) - .then(() => ng('build', '--prod', '--output-hashing=none')) + .then(() => ng('build', '--prod', '--output-hashing=none', '--vendor-chunk')) // Check class constructors are present in the vendor output. .then(() => expectFileToMatch('dist/vendor.bundle.js', /class \w{constructor\(\){/)); }