mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
e873c22617
The legacy `workspace` integration test asset folder has been removed as it was unused and no longer representative of modern Angular CLI workspaces. In line with this cleanup, the Bazel dependency definitions for the integration tests have been reorganized. Runtime data dependencies have been moved from the `js_test` rules to the `data` attribute of their corresponding `ts_project` rules. This is a cleaner and more appropriate approach as it co-locates a test's runtime data dependencies with its source code definition, making the relationship between the code and its required assets more explicit and improving the overall maintainability of the build configuration. PR Close #64271
173 lines
6.6 KiB
Python
173 lines
6.6 KiB
Python
"""Rules/toolchains for angular with Bazel."""
|
|
|
|
module(
|
|
name = "angular",
|
|
)
|
|
|
|
bazel_dep(name = "rules_pkg", version = "1.1.0")
|
|
bazel_dep(name = "rules_nodejs", version = "6.5.2")
|
|
bazel_dep(name = "aspect_rules_ts", version = "3.7.0")
|
|
bazel_dep(name = "aspect_rules_js", version = "2.6.0")
|
|
bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1")
|
|
bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0")
|
|
bazel_dep(name = "aspect_rules_rollup", version = "2.0.1")
|
|
bazel_dep(name = "bazel_skylib", version = "1.8.2")
|
|
bazel_dep(name = "aspect_bazel_lib", version = "2.21.2")
|
|
bazel_dep(name = "tar.bzl", version = "0.5.6")
|
|
bazel_dep(name = "yq.bzl", version = "0.3.1")
|
|
bazel_dep(name = "rules_angular")
|
|
git_override(
|
|
module_name = "rules_angular",
|
|
commit = "c3721b6ece2050a59a97562e3b95527a3092b03b",
|
|
remote = "https://github.com/devversion/rules_angular.git",
|
|
)
|
|
|
|
bazel_dep(name = "devinfra")
|
|
git_override(
|
|
module_name = "devinfra",
|
|
commit = "58610eacb7efbc261f16197586fa7fb4c81adccd",
|
|
remote = "https://github.com/angular/dev-infra.git",
|
|
)
|
|
|
|
bazel_dep(name = "rules_sass")
|
|
git_override(
|
|
module_name = "rules_sass",
|
|
commit = "1184a80751a21af8348f308abc5b38a41f26850e",
|
|
remote = "https://github.com/devversion/rules_sass.git",
|
|
)
|
|
|
|
bazel_dep(name = "rules_browsers")
|
|
git_override(
|
|
module_name = "rules_browsers",
|
|
commit = "6749ba4c0dc5e04536369fa91fdb2d827b6705ff",
|
|
remote = "https://github.com/devversion/rules_browsers.git",
|
|
)
|
|
|
|
yq = use_extension("@yq.bzl//yq:extensions.bzl", "yq")
|
|
use_repo(yq, "yq_toolchains")
|
|
|
|
node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node")
|
|
node.toolchain(node_version = "20.19.0")
|
|
use_repo(node, "nodejs_toolchains")
|
|
use_repo(node, "nodejs_darwin_amd64")
|
|
use_repo(node, "nodejs_darwin_arm64")
|
|
use_repo(node, "nodejs_linux_amd64")
|
|
use_repo(node, "nodejs_linux_arm64")
|
|
use_repo(node, "nodejs_linux_ppc64le")
|
|
use_repo(node, "nodejs_linux_s390x")
|
|
use_repo(node, "nodejs_windows_amd64")
|
|
|
|
pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
|
|
pnpm.pnpm(
|
|
name = "pnpm",
|
|
pnpm_version = "10.16.1",
|
|
)
|
|
use_repo(pnpm, "pnpm")
|
|
|
|
npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm")
|
|
npm.npm_translate_lock(
|
|
name = "npm",
|
|
data = [
|
|
"//:.pnpmfile.cjs",
|
|
"//:package.json",
|
|
"//:pnpm-workspace.yaml",
|
|
"//:tools/pnpm-patches/dagre-d3-es+7.0.11.patch",
|
|
"//adev:package.json",
|
|
"//adev/shared-docs:package.json",
|
|
"//adev/shared-docs/pipeline/api-gen:package.json",
|
|
"//integration:package.json",
|
|
"//modules:package.json",
|
|
"//packages/animations:package.json",
|
|
"//packages/benchpress:package.json",
|
|
"//packages/common:package.json",
|
|
"//packages/compiler:package.json",
|
|
"//packages/compiler-cli:package.json",
|
|
"//packages/compiler-cli/linker/babel/test:package.json",
|
|
"//packages/core:package.json",
|
|
"//packages/core/test/bundling:package.json",
|
|
"//packages/elements:package.json",
|
|
"//packages/forms:package.json",
|
|
"//packages/language-service:package.json",
|
|
"//packages/localize:package.json",
|
|
"//packages/platform-browser:package.json",
|
|
"//packages/platform-browser-dynamic:package.json",
|
|
"//packages/platform-server:package.json",
|
|
"//packages/router:package.json",
|
|
"//packages/service-worker:package.json",
|
|
"//packages/upgrade:package.json",
|
|
"//tools/bazel/rules_angular_store:package.json",
|
|
"//vscode-ng-language-service/integration/pre_standalone_project:package.json",
|
|
"//vscode-ng-language-service/integration/project:package.json",
|
|
],
|
|
npmrc = "//:.npmrc",
|
|
pnpm_lock = "//:pnpm-lock.yaml",
|
|
verify_node_modules_ignored = "//:.bazelignore",
|
|
)
|
|
use_repo(npm, "npm")
|
|
|
|
rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext")
|
|
rules_ts_ext.deps(
|
|
name = "angular_npm_typescript",
|
|
# Obtained by: curl --silent https://registry.npmjs.org/typescript/5.9.3 | jq -r '.dist.integrity'
|
|
ts_integrity = "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
|
ts_version = "5.9.3",
|
|
)
|
|
use_repo(rules_ts_ext, **{"npm_typescript": "angular_npm_typescript"})
|
|
|
|
# TODO: Figure out how to make ng_project update whenever the packages/core::pkg target changes.
|
|
rules_angular = use_extension("@rules_angular//setup:extensions.bzl", "rules_angular")
|
|
|
|
use_repo_rule("@rules_angular//setup:repositories.bzl", "configurable_deps_repo")(
|
|
name = "rules_angular_configurable_deps",
|
|
angular_compiler_cli = "@angular//:node_modules/@angular/compiler-cli",
|
|
typescript = "@angular//:node_modules/typescript",
|
|
)
|
|
|
|
override_repo(rules_angular, "rules_angular_configurable_deps")
|
|
|
|
register_toolchains(
|
|
"@devinfra//bazel/git-toolchain:git_linux_toolchain",
|
|
"@devinfra//bazel/git-toolchain:git_macos_x86_toolchain",
|
|
"@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain",
|
|
"@devinfra//bazel/git-toolchain:git_windows_toolchain",
|
|
)
|
|
|
|
CLDR_VERSION = "41"
|
|
|
|
cldr_json_data = use_repo_rule("//packages/common/locales/generate-locales-tool:cldr-data.bzl", "cldr_json_data_repository")
|
|
|
|
cldr_json_data(
|
|
name = "cldr_json_data",
|
|
urls = {
|
|
"https://github.com/unicode-org/cldr-json/releases/download/%s.0.0/cldr-%s.0.0-json-full.zip" % (CLDR_VERSION, CLDR_VERSION): "649b76647269e32b1b0a5f7b6eed52e9e63a1581f1afdcf4f6771e49c9713614",
|
|
},
|
|
)
|
|
|
|
cldr_xml_data = use_repo_rule("//packages/common/locales/generate-locales-tool:cldr-data.bzl", "cldr_xml_data_repository")
|
|
|
|
cldr_xml_data(
|
|
name = "cldr_xml_data",
|
|
urls = {
|
|
"https://github.com/unicode-org/cldr/releases/download/release-%s/cldr-common-%s.0.zip" % (CLDR_VERSION, CLDR_VERSION): "823c6170c41e2de2c229574e8a436332d25f1c9723409867fe721e00bc92d853",
|
|
},
|
|
)
|
|
|
|
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
|
|
|
|
# Fetch sauce connect (tool to open Saucelabs tunnel for Saucelabs browser tests)
|
|
http_archive(
|
|
name = "sauce_connect_linux_amd64",
|
|
build_file_content = """exports_files(["bin/sc"], visibility = ["//visibility:public"])""",
|
|
sha256 = "26b9c3630f441b47854b6032f7eca6f1d88d3f62e50ee44c27015d71a5155c36",
|
|
strip_prefix = "sc-4.8.2-linux",
|
|
url = "https://saucelabs.com/downloads/sc-4.8.2-linux.tar.gz",
|
|
)
|
|
|
|
http_archive(
|
|
name = "sauce_connect_mac",
|
|
build_file_content = """exports_files(["bin/sc"], visibility = ["//visibility:public"])""",
|
|
sha256 = "28277ce81ef9ab84f5b87b526258920a8ead44789a5034346e872629bbf38089",
|
|
strip_prefix = "sc-4.8.2-osx",
|
|
url = "https://saucelabs.com/downloads/sc-4.8.2-osx.zip",
|
|
)
|