build: separate zone.js dependencies into their own directory (#63425)

Separate out zone.js dependencies

PR Close #63425
This commit is contained in:
Joey Perrott
2025-08-27 18:10:01 +00:00
committed by Andrew Scott
parent 38de2b3ad4
commit fe349827ef
18 changed files with 2401 additions and 4487 deletions
+2
View File
@@ -65,4 +65,6 @@ packages/zone.js/test/typings/node_modules
packages/upgrade/node_modules
packages/benchpress/node_modules
packages/service-worker/node_modules
packages/zone.js/test/typings/node_modules
packages/zone.js/node_modules
tools/bazel/rules_angular_store/node_modules
-2
View File
@@ -157,8 +157,6 @@ jobs:
cp dist/bin/packages/zone.js/npm_package/bundles/zone-patch-electron.umd.js ./packages/zone.js/test/extra/
cp dist/bin/packages/zone.js/test/closure/zone.closure.js ./packages/zone.js/build/test/zone.closure.mjs
# Install
- run: pnpm -C packages/zone.js install --frozen-lockfile
# Run zone.js tools tests
- run: pnpm -C packages/zone.js promisefinallytest
- run: pnpm -C packages/zone.js jest:test
+14 -4
View File
@@ -1,9 +1,13 @@
load("@npm//:defs.bzl", "npm_link_all_packages")
load("//packages/zone.js:bundles.bzl", "BUNDLES_ENTRY_POINTS")
load("//packages/zone.js:tools.bzl", "generate_rollup_bundle")
load("//tools:defaults.bzl", "npm_package", "ts_config", "ts_project")
load("//packages/zone.js:tools.bzl", "generate_rollup_bundle", "npm_package", "ts_config", "ts_project")
package(default_visibility = ["//visibility:public"])
npm_link_all_packages(
name = "node_modules",
)
ts_config(
name = "tsconfig_build",
src = "tsconfig.json",
@@ -14,8 +18,8 @@ ts_config(
src = "tsconfig-test.json",
deps = [
":tsconfig_build",
"//:node_modules/@types/jasmine",
"//:node_modules/@types/node",
"//packages/zone.js:node_modules/@types/jasmine",
"//packages/zone.js:node_modules/@types/node",
],
)
@@ -49,6 +53,7 @@ generate_rollup_bundle(
)
npm_package(
name = "npm_package",
srcs = [
"CHANGELOG.md",
"README.md",
@@ -74,3 +79,8 @@ npm_package(
package = "zone.js",
visibility = ["//visibility:public"],
)
alias(
name = "pkg",
actual = ":npm_package",
)
+4 -4
View File
@@ -1,4 +1,4 @@
load("//tools:defaults.bzl", "copy_to_bin", "ts_project")
load("//packages/zone.js:tools.bzl", "copy_to_bin", "ts_project")
package(default_visibility = ["//visibility:public"])
@@ -65,8 +65,8 @@ ts_project(
),
deps = [
":zone_d_ts",
"//:node_modules/@types/jasmine",
"//:node_modules/@types/node",
"//:node_modules/rxjs",
"//packages/zone.js:node_modules/@types/jasmine",
"//packages/zone.js:node_modules/@types/node",
"//packages/zone.js:node_modules/rxjs",
],
)
+20 -6
View File
@@ -8,14 +8,28 @@
"fesm2015": "./fesm2015/zone.js",
"typings": "./zone.d.ts",
"devDependencies": {
"@externs/nodejs": "^1.5.0",
"@types/node": "^10.9.4",
"@csstools/css-calc": "2.1.4",
"@csstools/css-color-parser": "3.1.0",
"@externs/nodejs": "1.5.0",
"@types/jasmine": "5.1.9",
"@types/node": "24.3.0",
"@types/shelljs": "0.8.17",
"@types/systemjs": "6.15.3",
"bluebird": "3.7.2",
"domino": "https://github.com/angular/domino.git#93e720f143d0296dd2726ffbcf4fc12283363a7b",
"jest": "^30.0.0",
"jest-environment-jsdom": "^30.0.0",
"jest-environment-node": "^30.0.0",
"mocha": "^11.0.0",
"esbuild-plugin-umd-wrapper": "3.0.0",
"jest-environment-jsdom": "30.1.1",
"jest-environment-node": "30.1.1",
"jest": "30.1.1",
"mocha": "11.7.1",
"mock-require": "3.0.3",
"jasmine": "5.9.0",
"source-map-support": "0.5.21",
"jasmine-core": "5.9.0",
"jasmine-reporters": "2.5.2",
"rxjs": "7.8.2",
"shelljs": "0.10.0",
"systemjs": "6.15.1",
"tslib": "^2.3.0",
"vitest": "^3.1.3"
},
-4269
View File
File diff suppressed because it is too large Load Diff
-3
View File
@@ -1,3 +0,0 @@
packages:
- .
- test/typings/
+28 -28
View File
@@ -1,7 +1,7 @@
load("//packages/zone.js:tools.bzl", "jasmine_test", "ts_project", "zone_compatible_jasmine_test")
load("//packages/zone.js/test:karma_test.bzl", "karma_test")
load("//tools:defaults.bzl", "jasmine_test", "ts_project", "zone_compatible_jasmine_test")
package(default_visibility = ["//:__subpackages__"])
package(default_visibility = ["//packages/zone.js:__subpackages__"])
exports_files([
"assets/sample.json",
@@ -38,7 +38,7 @@ ts_project(
),
deps = [
":common_spec_util",
"//:node_modules/rxjs",
"//packages/zone.js:node_modules/rxjs",
"//packages/zone.js/lib",
],
)
@@ -69,12 +69,12 @@ ts_project(
testonly = True,
srcs = glob(["node/*.ts"]),
deps = [
"//:node_modules/@types/node",
"//:node_modules/@types/shelljs",
"//:node_modules/@types/systemjs",
"//:node_modules/rxjs",
"//:node_modules/shelljs",
"//:node_modules/systemjs",
"//packages/zone.js:node_modules/@types/node",
"//packages/zone.js:node_modules/@types/shelljs",
"//packages/zone.js:node_modules/@types/systemjs",
"//packages/zone.js:node_modules/rxjs",
"//packages/zone.js:node_modules/shelljs",
"//packages/zone.js:node_modules/systemjs",
"//packages/zone.js/lib",
],
)
@@ -88,11 +88,11 @@ ts_project(
],
deps = [
":common_spec_env",
"//:node_modules/@types/shelljs",
"//:node_modules/@types/systemjs",
"//:node_modules/rxjs",
"//:node_modules/shelljs",
"//:node_modules/systemjs",
"//packages/zone.js:node_modules/@types/shelljs",
"//packages/zone.js:node_modules/@types/systemjs",
"//packages/zone.js:node_modules/rxjs",
"//packages/zone.js:node_modules/shelljs",
"//packages/zone.js:node_modules/systemjs",
"//packages/zone.js/lib",
],
)
@@ -104,7 +104,7 @@ ts_project(
"extra/bluebird.spec.ts",
],
deps = [
"//:node_modules/bluebird",
"//packages/zone.js:node_modules/bluebird",
"//packages/zone.js/lib",
],
)
@@ -115,7 +115,7 @@ ts_project(
srcs = ["node_bluebird_entry_point.init.ts"],
deps = [
":common_spec_env",
"//:node_modules/bluebird",
"//packages/zone.js:node_modules/bluebird",
"//packages/zone.js/lib",
"//packages/zone.js/lib:zone_d_ts",
],
@@ -201,7 +201,7 @@ ts_project(
testonly = True,
srcs = ["npm_package/npm_package.spec.ts"],
deps = [
"//:node_modules/@types/shelljs",
"//packages/zone.js:node_modules/@types/shelljs",
],
)
@@ -209,7 +209,7 @@ jasmine_test(
name = "test_npm_package",
data = [
":npm_package_spec_lib",
"//:node_modules/shelljs",
"//packages/zone.js:node_modules/shelljs",
"//packages/zone.js:npm_package",
],
)
@@ -225,11 +225,11 @@ env_deps = [
":common_spec_util",
":error_spec_srcs",
"//packages/zone.js/lib:lib",
"//:node_modules/@types/shelljs",
"//:node_modules/@types/systemjs",
"//:node_modules/rxjs",
"//:node_modules/shelljs",
"//:node_modules/systemjs",
"//packages/zone.js:node_modules/@types/shelljs",
"//packages/zone.js:node_modules/@types/systemjs",
"//packages/zone.js:node_modules/rxjs",
"//packages/zone.js:node_modules/shelljs",
"//packages/zone.js:node_modules/systemjs",
]
env_entry_point = ":browser-env-setup.ts"
@@ -254,11 +254,11 @@ test_deps = [
":common_spec_util",
":error_spec_srcs",
"//packages/zone.js/lib:lib",
"//:node_modules/@types/shelljs",
"//:node_modules/@types/systemjs",
"//:node_modules/rxjs",
"//:node_modules/shelljs",
"//:node_modules/systemjs",
"//packages/zone.js:node_modules/@types/shelljs",
"//packages/zone.js:node_modules/@types/systemjs",
"//packages/zone.js:node_modules/rxjs",
"//packages/zone.js:node_modules/shelljs",
"//packages/zone.js:node_modules/systemjs",
]
test_entry_point = ":browser_entry_point.ts"
+1 -1
View File
@@ -1,4 +1,4 @@
load("//tools:defaults.bzl", "ts_project")
load("//packages/zone.js:tools.bzl", "ts_project")
ts_project(
name = "closure",
+1 -1
View File
@@ -1,4 +1,4 @@
load("//tools:defaults.bzl", "esbuild", "ts_project", "web_test")
load("//packages/zone.js:tools.bzl", "esbuild", "ts_project", "web_test")
def karma_test_prepare(name, env_srcs, env_deps, env_entry_point, test_srcs, test_deps, test_entry_point):
ts_project(
+1 -1
View File
@@ -10,7 +10,7 @@
"license": "MIT",
"dependencies": {
"domino": "https://github.com/angular/domino.git#93e720f143d0296dd2726ffbcf4fc12283363a7b",
"zone.js": "link:../../../../dist/bin/packages/zone.js/npm_package"
"zone.js": "workspace:*"
},
"devDependencies": {
"typescript": "5.9.2"
+1 -1
View File
@@ -15,5 +15,5 @@
"strict": true,
"lib": ["es5", "dom", "es2015.collection", "es2015.iterable", "es2015.promise"]
},
"files": ["./type.test.ts", "./node_modules/zone.js/zone.d.ts"]
"files": ["./type.test.ts", "./node_modules/zone.js/zone.ts"]
}
@@ -1,4 +1,4 @@
load("//tools:defaults.bzl", "jasmine_test", "ts_project")
load("//packages/zone.js:tools.bzl", "jasmine_test", "ts_project")
ts_project(
name = "patched_init",
+113
View File
@@ -1,7 +1,53 @@
"""Provides the rollup and dist file generation macro."""
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", _copy_to_bin = "copy_to_bin")
load("@aspect_rules_esbuild//esbuild:defs.bzl", _esbuild = "esbuild")
load("@aspect_rules_js//npm:defs.bzl", _npm_package = "npm_package")
load("@aspect_rules_ts//ts:defs.bzl", _ts_config = "ts_config")
load("@devinfra//bazel/jasmine:jasmine.bzl", _jasmine_test = "jasmine_test")
load("@devinfra//bazel/spec-bundling:index.bzl", "spec_bundle")
load("@devinfra//bazel/ts_project:index.bzl", "strict_deps_test")
load("@rules_angular//src/ts_project:index.bzl", _ts_project = "ts_project")
load("@rules_browsers//wtr:index.bzl", "wtr_test")
load("//packages/zone.js/tools:zone_bundle.bzl", "zone_bundle")
copy_to_bin = _copy_to_bin
esbuild = _esbuild
ts_config = _ts_config
npm_package = _npm_package
def ts_project(
name,
deps = [],
srcs = [],
source_map = True,
testonly = False,
tsconfig = None,
**kwargs):
if tsconfig == None:
if native.package_name().startswith("packages/zone.js"):
tsconfig = "//packages/zone.js:tsconfig_test" if testonly else "//packages/zone.js:tsconfig_build"
else:
fail("Failing... a tsconfig value must be provided.")
_ts_project(
name,
srcs = srcs,
deps = deps,
declaration = True,
source_map = source_map,
testonly = testonly,
tsconfig = tsconfig,
**kwargs
)
strict_deps_test(
name = "%s_deps" % name,
srcs = srcs,
tsconfig = tsconfig,
deps = deps,
)
def copy_dist(module_name, module_format, output_module_name, suffix, umd):
umd_output = umd
suffix_output = suffix
@@ -81,3 +127,70 @@ def generate_dist(bundles, output_format, umd):
suffix = "min.",
umd = umd,
)
def web_test(name, tags = [], deps = [], bootstrap = [], tsconfig = "//packages/zone.js:tsconfig_build", **kwargs):
spec_bundle(
name = "%s_bundle" % name,
testonly = True,
srcs = [tsconfig],
tsconfig = tsconfig,
bootstrap = bootstrap,
deps = deps,
tags = [
"manual",
],
config = {
"resolveExtensions": [".js", ".mjs"],
},
platform = "browser",
external = kwargs.pop("external", []),
)
wtr_test(
name = name,
deps = [":%s_bundle" % name] + kwargs.pop("data", []),
tags = tags,
**kwargs
)
def jasmine_test(name, fixed_args = [], **kwargs):
all_fixed_args = [
# Escape so that the `js_binary` launcher triggers Bash expansion.
"'**/*+(.|_)spec.js'",
"'**/*+(.|_)spec.mjs'",
"'**/*+(.|_)spec.cjs'",
] + fixed_args
_jasmine_test(
name = name,
node_modules = "//packages/zone.js:node_modules",
chdir = native.package_name(),
fixed_args = all_fixed_args,
size = kwargs.pop("size", "medium"),
**kwargs
)
def zone_compatible_jasmine_test(name, external = [], data = [], bootstrap = [], **kwargs):
spec_bundle(
name = "%s_bundle" % name,
# Specs from this attribute are filtered and will be executed. We
# add bootstrap here for discovery of the module mappings aspect.
deps = data + bootstrap,
bootstrap = bootstrap,
external = external + ["domino", "typescript"],
platform = "node",
config = {
"banner": {
"js": """import {createRequire as __cjsCompatRequire} from 'module';
const require = __cjsCompatRequire(import.meta.url);""",
},
"target": ["ES2022"],
"format": "esm",
},
)
jasmine_test(
name = name,
data = [":%s_bundle" % name],
**kwargs
)
+1 -1
View File
@@ -55,7 +55,7 @@ js_library(
srcs = ["umd.mjs"],
deps = [
":base",
"//:node_modules/esbuild-plugin-umd-wrapper",
"//packages/zone.js:node_modules/esbuild-plugin-umd-wrapper",
],
)
+2212 -162
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -23,6 +23,8 @@ packages:
- packages/benchpress/
- packages/service-worker/
- packages/upgrade/
- packages/zone.js/
- packages/zone.js/test/typings/
- tools/bazel/rules_angular_store/
allowedDeprecatedVersions:
-3
View File
@@ -72,9 +72,6 @@ def _determine_tsconfig(testonly):
if native.package_name().startswith("packages/examples"):
return "//packages/examples:tsconfig_test" if testonly else "//packages/examples:tsconfig_build"
if native.package_name().startswith("packages/zone.js"):
return "//packages/zone.js:tsconfig_test" if testonly else "//packages/zone.js:tsconfig_build"
if native.package_name().startswith("packages"):
return "//packages:tsconfig_test" if testonly else "//packages:tsconfig_build"