diff --git a/goldens/public-api/angular_devkit/build_angular/index.md b/goldens/public-api/angular_devkit/build_angular/index.md index 0a551d617d09..a5e253c337a2 100644 --- a/goldens/public-api/angular_devkit/build_angular/index.md +++ b/goldens/public-api/angular_devkit/build_angular/index.md @@ -269,6 +269,7 @@ export interface ServerBuilderOptions { statsJson?: boolean; stylePreprocessorOptions?: StylePreprocessorOptions_3; tsConfig: string; + vendorChunk?: boolean; verbose?: boolean; watch?: boolean; } diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/schema.json b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/schema.json index bd78395f3128..0c184a854d5d 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/schema.json +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/schema.json @@ -264,7 +264,7 @@ }, "vendorChunk": { "type": "boolean", - "description": "Generate a seperate bundle containing only vendor libraries. This option should only used for development.", + "description": "Generate a seperate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time.", "default": false }, "commonChunk": { diff --git a/packages/angular_devkit/build_angular/src/builders/browser/schema.json b/packages/angular_devkit/build_angular/src/builders/browser/schema.json index c0dc1e719e54..b45065bb7df0 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser/schema.json +++ b/packages/angular_devkit/build_angular/src/builders/browser/schema.json @@ -256,7 +256,7 @@ }, "vendorChunk": { "type": "boolean", - "description": "Generate a seperate bundle containing only vendor libraries. This option should only used for development.", + "description": "Generate a seperate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time.", "default": false }, "commonChunk": { diff --git a/packages/angular_devkit/build_angular/src/builders/server/schema.json b/packages/angular_devkit/build_angular/src/builders/server/schema.json index 196af202b80e..73d6088c1f38 100644 --- a/packages/angular_devkit/build_angular/src/builders/server/schema.json +++ b/packages/angular_devkit/build_angular/src/builders/server/schema.json @@ -116,6 +116,11 @@ "description": "URL where files will be deployed.", "x-deprecated": "Use \"baseHref\" browser builder option, \"APP_BASE_HREF\" DI token or a combination of both instead. For more information, see https://angular.io/guide/deployment#the-deploy-url." }, + "vendorChunk": { + "type": "boolean", + "description": "Generate a seperate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time.", + "default": false + }, "verbose": { "type": "boolean", "description": "Adds more details to output logging.", diff --git a/packages/schematics/angular/migrations/update-15/update-workspace-config.ts b/packages/schematics/angular/migrations/update-15/update-workspace-config.ts index 2b8686e8cf5a..f2d6721846e8 100644 --- a/packages/schematics/angular/migrations/update-15/update-workspace-config.ts +++ b/packages/schematics/angular/migrations/update-15/update-workspace-config.ts @@ -18,8 +18,12 @@ export default function (): Rule { continue; } - for (const [, options] of allTargetOptions(target)) { + for (const [name, options] of allTargetOptions(target)) { delete options.bundleDependencies; + + if (name === 'development') { + options.vendorChunk ??= true; + } } } } diff --git a/packages/schematics/angular/migrations/update-15/update-workspace-config_spec.ts b/packages/schematics/angular/migrations/update-15/update-workspace-config_spec.ts index 553ad9ef4d43..f447f67ac2ad 100644 --- a/packages/schematics/angular/migrations/update-15/update-workspace-config_spec.ts +++ b/packages/schematics/angular/migrations/update-15/update-workspace-config_spec.ts @@ -49,6 +49,9 @@ function createWorkSpaceConfig(tree: UnitTestTree) { bundleDependencies: true, aot: true, }, + development: { + bundleDependencies: true, + }, // eslint-disable-next-line @typescript-eslint/no-explicit-any } as any, }, @@ -83,4 +86,14 @@ describe(`Migration to update 'angular.json'. ${schematicName}`, () => { expect(configurations?.one.bundleDependencies).toBeUndefined(); expect(configurations?.two.bundleDependencies).toBeUndefined(); }); + + it(`should add 'vendorChunk: true' to development configuration`, async () => { + const newTree = await schematicRunner.runSchematicAsync(schematicName, {}, tree).toPromise(); + const { options, configurations } = getServerTarget(newTree); + + expect(options.bundleDependencies).toBeUndefined(); + expect(configurations).toBeDefined(); + expect(configurations?.development.vendorChunk).toBeTrue(); + expect(configurations?.one.vendorChunk).toBeUndefined(); + }); }); diff --git a/packages/schematics/angular/universal/index.ts b/packages/schematics/angular/universal/index.ts index 471ca3b61126..a8273e21054f 100644 --- a/packages/schematics/angular/universal/index.ts +++ b/packages/schematics/angular/universal/index.ts @@ -60,6 +60,7 @@ function updateConfigFile(options: UniversalOptions, tsConfigDirectory: Path): R preserveSymlinks: options?.preserveSymlinks, extractLicenses: options?.extractLicenses, inlineStyleLanguage: options?.inlineStyleLanguage, + vendorChunk: options?.vendorChunk, }; };