Skip to content

Commit 79a0782

Browse files
committed
feat(@angular-devkit/build-angular): add externalDependencies to the esbuild browser builder
This commit add a new `externalDependencies` option to the experimental browser builder. Dependencies listed in this option will not be included in the final bundle, instead the user would need to provide them at runtime using import maps or another method. Closes angular#23322
1 parent c2db718 commit 79a0782

File tree

5 files changed

+591
-4
lines changed

5 files changed

+591
-4
lines changed

packages/angular_devkit/build_angular/BUILD.bazel

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ ts_json_schema(
2222
src = "src/builders/browser/schema.json",
2323
)
2424

25+
ts_json_schema(
26+
name = "browser_esbuild_schema",
27+
src = "src/builders/browser-esbuild/schema.json",
28+
)
29+
2530
ts_json_schema(
2631
name = "dev_server_schema",
2732
src = "src/builders/dev-server/schema.json",
@@ -70,6 +75,7 @@ ts_library(
7075
) + [
7176
"//packages/angular_devkit/build_angular:src/builders/app-shell/schema.ts",
7277
"//packages/angular_devkit/build_angular:src/builders/browser/schema.ts",
78+
"//packages/angular_devkit/build_angular:src/builders/browser-esbuild/schema.ts",
7379
"//packages/angular_devkit/build_angular:src/builders/dev-server/schema.ts",
7480
"//packages/angular_devkit/build_angular:src/builders/extract-i18n/schema.ts",
7581
"//packages/angular_devkit/build_angular:src/builders/karma/schema.ts",

packages/angular_devkit/build_angular/builders.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
},
1414
"browser-esbuild": {
1515
"implementation": "./src/builders/browser-esbuild",
16-
"schema": "./src/builders/browser/schema.json",
16+
"schema": "./src/builders/browser-esbuild/schema.json",
1717
"description": "Build a browser application."
1818
},
1919
"dev-server": {

packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ import { generateEntryPoints } from '../../utils/package-chunk-sort';
2020
import { augmentAppWithServiceWorker } from '../../utils/service-worker';
2121
import { getIndexInputFile, getIndexOutputFile } from '../../utils/webpack-browser-config';
2222
import { resolveGlobalStyles } from '../../webpack/configs';
23-
import { Schema as BrowserBuilderOptions, SourceMapClass } from '../browser/schema';
2423
import { createCompilerPlugin } from './compiler-plugin';
2524
import { DEFAULT_OUTDIR, bundle, logMessages } from './esbuild';
2625
import { logExperimentalWarnings } from './experimental-warnings';
2726
import { normalizeOptions } from './options';
27+
import { Schema as BrowserBuilderOptions, SourceMapClass } from './schema';
2828
import { bundleStylesheetText } from './stylesheets';
2929

3030
/**
@@ -35,7 +35,7 @@ import { bundleStylesheetText } from './stylesheets';
3535
* @returns A promise with the builder result output
3636
*/
3737
// eslint-disable-next-line max-lines-per-function
38-
export async function execute(
38+
export async function buildEsbuildBrowser(
3939
options: BrowserBuilderOptions,
4040
context: BuilderContext,
4141
): Promise<BuilderOutput> {
@@ -312,6 +312,7 @@ async function bundleCode(
312312
sourcemap: sourcemapOptions.scripts && (sourcemapOptions.hidden ? 'external' : true),
313313
splitting: true,
314314
tsconfig,
315+
external: options.externalDependencies,
315316
write: false,
316317
platform: 'browser',
317318
preserveSymlinks: options.preserveSymlinks,
@@ -339,4 +340,4 @@ async function bundleCode(
339340
});
340341
}
341342

342-
export default createBuilder(execute);
343+
export default createBuilder(buildEsbuildBrowser);

0 commit comments

Comments
 (0)