mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
Enables code spitting for ESBuild bundling of the compiler-cli. When we initially configured ESBuild as part of APF v13, we left this option disabled as code splitting is marked experimental. The ESM splitting mechanism in ESBuild seems very solid so far (judging subjectively and by experience/reports in the ESBuild repo), so we should give it a shot, in order to significantly reduce the size of the NPM package, and simplify debugging (by not having duplicated code portions for all the different entry points). To clarify: Code splitting is helpful as we have multiple entry-points that currently duplicate code. With code splitting these entry-points would share common code instead. PR Close #43932
168 lines
4.9 KiB
Text
168 lines
4.9 KiB
Text
load("//tools:defaults.bzl", "api_golden_test", "pkg_npm", "ts_config", "ts_library")
|
|
load("@npm//@bazel/esbuild:index.bzl", "esbuild", "esbuild_config")
|
|
load("//tools:extract_typings_rule.bzl", "extract_typings")
|
|
|
|
# Load ng_perf_flag explicitly from ng_perf.bzl as it's private API, and not exposed to other
|
|
# consumers of @angular/bazel.
|
|
load("//packages/bazel/src:ng_perf.bzl", "ng_perf_flag")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
PUBLIC_TARGETS = [
|
|
":compiler-cli",
|
|
"//packages/compiler-cli/private",
|
|
"//packages/compiler-cli/ngcc",
|
|
"//packages/compiler-cli/linker",
|
|
"//packages/compiler-cli/linker/babel",
|
|
]
|
|
|
|
esbuild_config(
|
|
name = "esbuild_config",
|
|
config_file = "esbuild.config.js",
|
|
)
|
|
|
|
esbuild(
|
|
name = "bundles",
|
|
config = ":esbuild_config",
|
|
entry_points = [
|
|
":index.ts",
|
|
"//packages/compiler-cli:src/bin/ngc.ts",
|
|
"//packages/compiler-cli/ngcc:main-ngcc.ts",
|
|
"//packages/compiler-cli/ngcc:index.ts",
|
|
"//packages/compiler-cli:src/bin/ng_xi18n.ts",
|
|
"//packages/compiler-cli/linker:index.ts",
|
|
"//packages/compiler-cli/linker/babel:index.ts",
|
|
"//packages/compiler-cli/private:bazel.ts",
|
|
"//packages/compiler-cli/private:localize.ts",
|
|
"//packages/compiler-cli/private:migrations.ts",
|
|
"//packages/compiler-cli/private:tooling.ts",
|
|
"//packages/compiler-cli/ngcc:src/locking/lock_file_with_child_process/ngcc_lock_unlocker.ts",
|
|
"//packages/compiler-cli/ngcc:src/execution/cluster/ngcc_cluster_worker.ts",
|
|
],
|
|
external = [
|
|
"@angular/compiler",
|
|
"typescript",
|
|
"tsickle",
|
|
"@babel/core",
|
|
"reflect-metadata",
|
|
"canonical-path",
|
|
"chokidar",
|
|
"convert-source-map",
|
|
"dependency-graph",
|
|
"magic-string",
|
|
"semver",
|
|
"source-map",
|
|
"sourcemap-codec",
|
|
"tslib",
|
|
"yargs",
|
|
],
|
|
format = "esm",
|
|
platform = "node",
|
|
splitting = True,
|
|
target = "node12",
|
|
deps = PUBLIC_TARGETS,
|
|
)
|
|
|
|
ts_config(
|
|
name = "tsconfig",
|
|
src = "tsconfig-build.json",
|
|
deps = ["//packages:tsconfig-build.json"],
|
|
)
|
|
|
|
ts_library(
|
|
name = "import_meta_url_types",
|
|
srcs = ["import_meta_url.d.ts"],
|
|
)
|
|
|
|
ts_library(
|
|
name = "compiler-cli",
|
|
srcs = glob(
|
|
[
|
|
"*.ts",
|
|
"src/**/*.ts",
|
|
],
|
|
exclude = [
|
|
"import_meta_url.d.ts",
|
|
"src/integrationtest/**/*.ts",
|
|
],
|
|
),
|
|
tsconfig = ":tsconfig",
|
|
deps = [
|
|
":import_meta_url_types",
|
|
"//packages/compiler",
|
|
"//packages/compiler-cli/private",
|
|
"//packages/compiler-cli/src/ngtsc/core",
|
|
"//packages/compiler-cli/src/ngtsc/core:api",
|
|
"//packages/compiler-cli/src/ngtsc/diagnostics",
|
|
"//packages/compiler-cli/src/ngtsc/file_system",
|
|
"//packages/compiler-cli/src/ngtsc/incremental",
|
|
"//packages/compiler-cli/src/ngtsc/indexer",
|
|
"//packages/compiler-cli/src/ngtsc/logging",
|
|
"//packages/compiler-cli/src/ngtsc/perf",
|
|
"//packages/compiler-cli/src/ngtsc/program_driver",
|
|
"//packages/compiler-cli/src/ngtsc/reflection",
|
|
"//packages/compiler-cli/src/ngtsc/shims",
|
|
"//packages/compiler-cli/src/ngtsc/translator",
|
|
"//packages/compiler-cli/src/ngtsc/typecheck",
|
|
"//packages/compiler-cli/src/ngtsc/typecheck/api",
|
|
"//packages/compiler-cli/src/transformers/downlevel_decorators_transform",
|
|
"@npm//@bazel/typescript",
|
|
"@npm//@types/node",
|
|
"@npm//@types/yargs",
|
|
"@npm//chokidar",
|
|
"@npm//reflect-metadata",
|
|
"@npm//tsickle",
|
|
"@npm//typescript",
|
|
],
|
|
)
|
|
|
|
extract_typings(
|
|
name = "api_type_definitions",
|
|
deps = PUBLIC_TARGETS,
|
|
)
|
|
|
|
pkg_npm(
|
|
name = "npm_package",
|
|
srcs = [
|
|
"package.json",
|
|
],
|
|
tags = [
|
|
"release-with-framework",
|
|
],
|
|
# Do not add more to this list.
|
|
# Dependencies on the full npm_package cause long re-builds.
|
|
visibility = [
|
|
"//integration:__pkg__",
|
|
"//packages/compiler-cli/integrationtest:__pkg__",
|
|
],
|
|
deps = [
|
|
":api_type_definitions",
|
|
":bundles",
|
|
],
|
|
)
|
|
|
|
api_golden_test(
|
|
name = "error_code_api",
|
|
data = [
|
|
":npm_package",
|
|
"//goldens:public-api",
|
|
],
|
|
entry_point = "angular/packages/compiler-cli/npm_package/src/ngtsc/diagnostics/src/error_code.d.ts",
|
|
golden = "angular/goldens/public-api/compiler-cli/error_code.md",
|
|
)
|
|
|
|
api_golden_test(
|
|
name = "compiler_options_api",
|
|
data = [
|
|
":npm_package",
|
|
"//goldens:public-api",
|
|
],
|
|
entry_point = "angular/packages/compiler-cli/npm_package/src/ngtsc/core/api/src/public_options.d.ts",
|
|
golden = "angular/goldens/public-api/compiler-cli/compiler_options.md",
|
|
)
|
|
|
|
# Controls whether the Ivy compiler produces performance traces as part of each build
|
|
ng_perf_flag(
|
|
name = "ng_perf",
|
|
build_setting_default = False,
|
|
)
|