|
1 |
| -# TODO(devversion): Investigate bzlmod and use it where possible. |
| 1 | +"""Rules/toolchains for angular_cli with Bazel.""" |
2 | 2 |
|
3 | 3 | module(
|
4 | 4 | name = "angular_cli",
|
5 | 5 | )
|
| 6 | + |
| 7 | +bazel_dep(name = "yq.bzl", version = "0.2.0") |
| 8 | +bazel_dep(name = "rules_nodejs", version = "6.5.0") |
| 9 | +bazel_dep(name = "aspect_rules_js", version = "2.4.2") |
| 10 | +bazel_dep(name = "aspect_rules_ts", version = "3.6.3") |
| 11 | +bazel_dep(name = "rules_pkg", version = "0.8.1") |
| 12 | +# Alow for usage of [email protected] even though other deps want a later verison. |
| 13 | +multiple_version_override(module_name="rules_pkg", versions = ["0.8.1", "1.1.0"]) |
| 14 | +bazel_dep(name = "aspect_bazel_lib", version = "2.20.0") |
| 15 | +bazel_dep(name = "bazel_skylib", version = "1.8.1") |
| 16 | +bazel_dep(name = "aspect_rules_esbuild", version = "0.22.1") |
| 17 | +bazel_dep(name = "aspect_rules_jasmine", version = "2.0.0") |
| 18 | +bazel_dep(name = "rules_angular") |
| 19 | +git_override( |
| 20 | + module_name = "rules_angular", |
| 21 | + commit = "a957283cdef0ade1fc6d1d7404f14577cebd3642", |
| 22 | + remote = "https://github.com/devversion/rules_angular.git", |
| 23 | +) |
| 24 | +bazel_dep(name = "devinfra") |
| 25 | +git_override( |
| 26 | + module_name = "devinfra", |
| 27 | + commit = "7a11f99c467ca5ae4411c27beeec4300e32b616a", |
| 28 | + remote = "https://github.com/angular/dev-infra.git", |
| 29 | +) |
| 30 | +bazel_dep(name = "rules_sass") |
| 31 | +git_override( |
| 32 | + module_name = "rules_sass", |
| 33 | + commit = "76078d5e9776a0080dcee496e90b88d8a6179c19", |
| 34 | + remote = "https://github.com/devversion/rules_sass.git", |
| 35 | +) |
| 36 | +bazel_dep(name = "rules_browsers") |
| 37 | +git_override( |
| 38 | + module_name = "rules_browsers", |
| 39 | + commit = "8ee9ae3216ef26516c8ef20537c89857343cdc3a", |
| 40 | + remote = "https://github.com/devversion/rules_browsers.git", |
| 41 | +) |
| 42 | + |
| 43 | +NODE_24_VERSION = "24.0.0" |
| 44 | +NODE_24_REPO = { |
| 45 | + "24.0.0-darwin_arm64": ("node-v24.0.0-darwin-arm64.tar.gz", "node-v24.0.0-darwin-arm64", "194e2f3dd3ec8c2adcaa713ed40f44c5ca38467880e160974ceac1659be60121"), |
| 46 | + "24.0.0-darwin_amd64": ("node-v24.0.0-darwin-x64.tar.gz", "node-v24.0.0-darwin-x64", "f716b3ce14a7e37a6cbf97c9de10d444d7da07ef833cd8da81dd944d111e6a4a"), |
| 47 | + "24.0.0-linux_arm64": ("node-v24.0.0-linux-arm64.tar.xz", "node-v24.0.0-linux-arm64", "d40ec7ffe0b82b02dce94208c84351424099bd70fa3a42b65c46d95322305040"), |
| 48 | + "24.0.0-linux_ppc64le": ("node-v24.0.0-linux-ppc64le.tar.xz", "node-v24.0.0-linux-ppc64le", "cfa0e8d51a2f9a446f1bfb81cdf4c7e95336ad622e2aa230e3fa1d093c63d77d"), |
| 49 | + "24.0.0-linux_s390x": ("node-v24.0.0-linux-s390x.tar.xz", "node-v24.0.0-linux-s390x", "e37a04c7ee05416ec1234fd3255e05b6b81287eb0424a57441c8b69f0a155021"), |
| 50 | + "24.0.0-linux_amd64": ("node-v24.0.0-linux-x64.tar.xz", "node-v24.0.0-linux-x64", "59b8af617dccd7f9f68cc8451b2aee1e86d6bd5cb92cd51dd6216a31b707efd7"), |
| 51 | + "24.0.0-windows_amd64": ("node-v24.0.0-win-x64.zip", "node-v24.0.0-win-x64", "3d0fff80c87bb9a8d7f49f2f27832aa34a1477d137af46f5b14df5498be81304"), |
| 52 | +} |
| 53 | + |
| 54 | +node = use_extension("@rules_nodejs//nodejs:extensions.bzl", "node") |
| 55 | +node.toolchain( |
| 56 | + name = "nodejs", |
| 57 | + node_repositories = NODE_24_REPO, |
| 58 | + node_version = NODE_24_VERSION, |
| 59 | +) |
| 60 | +use_repo(node, "nodejs_toolchains") |
| 61 | + |
| 62 | +node.toolchain( |
| 63 | + name = "node20", |
| 64 | + node_repositories = { |
| 65 | + "20.19.0-darwin_arm64": ("node-v20.19.0-darwin-arm64.tar.gz", "node-v20.19.0-darwin-arm64", "c016cd1975a264a29dc1b07c6fbe60d5df0a0c2beb4113c0450e3d998d1a0d9c"), |
| 66 | + "20.19.0-darwin_amd64": ("node-v20.19.0-darwin-x64.tar.gz", "node-v20.19.0-darwin-x64", "a8554af97d6491fdbdabe63d3a1cfb9571228d25a3ad9aed2df856facb131b20"), |
| 67 | + "20.19.0-linux_arm64": ("node-v20.19.0-linux-arm64.tar.xz", "node-v20.19.0-linux-arm64", "dbe339e55eb393955a213e6b872066880bb9feceaa494f4d44c7aac205ec2ab9"), |
| 68 | + "20.19.0-linux_ppc64le": ("node-v20.19.0-linux-ppc64le.tar.xz", "node-v20.19.0-linux-ppc64le", "84937108f005679e60b486ed8e801cebfe923f02b76d8e710463d32f82181f65"), |
| 69 | + "20.19.0-linux_s390x": ("node-v20.19.0-linux-s390x.tar.xz", "node-v20.19.0-linux-s390x", "11f8ee99d792a83bba7b29911e0229dd6cd5e88987d7416346067db1cc76d89a"), |
| 70 | + "20.19.0-linux_amd64": ("node-v20.19.0-linux-x64.tar.xz", "node-v20.19.0-linux-x64", "b4e336584d62abefad31baecff7af167268be9bb7dd11f1297112e6eed3ca0d5"), |
| 71 | + "20.19.0-windows_amd64": ("node-v20.19.0-win-x64.zip", "node-v20.19.0-win-x64", "be72284c7bc62de07d5a9fd0ae196879842c085f11f7f2b60bf8864c0c9d6a4f"), |
| 72 | + }, |
| 73 | + node_version = "20.19.0", |
| 74 | +) |
| 75 | +use_repo(node, "node20_toolchains") |
| 76 | + |
| 77 | +node.toolchain( |
| 78 | + name = "node22", |
| 79 | + node_repositories = { |
| 80 | + "22.12.0-darwin_arm64": ("node-v22.12.0-darwin-arm64.tar.gz", "node-v22.12.0-darwin-arm64", "293dcc6c2408da21562d135b0412525e381bb6fe150d688edb58fe850d0f3e13"), |
| 81 | + "22.12.0-darwin_amd64": ("node-v22.12.0-darwin-x64.tar.gz", "node-v22.12.0-darwin-x64", "52bc25dd026db7247c3c00439afdb83e95087248267f02d6c1a7250d1f896173"), |
| 82 | + "22.12.0-linux_arm64": ("node-v22.12.0-linux-arm64.tar.xz", "node-v22.12.0-linux-arm64", "8cfd5a8b9afae5a2e0bd86b0148ca31d2589c0ea669c2d0b11c132e35d90ed68"), |
| 83 | + "22.12.0-linux_ppc64le": ("node-v22.12.0-linux-ppc64le.tar.xz", "node-v22.12.0-linux-ppc64le", "199a606ba1ee86cce6d6b369c71f9d00873d2836a6662592afc3b6a5923e2004"), |
| 84 | + "22.12.0-linux_s390x": ("node-v22.12.0-linux-s390x.tar.xz", "node-v22.12.0-linux-s390x", "9b517f8006eb4b451d40c461cbe64f93c6455566dbe2613387ab02412bc06d35"), |
| 85 | + "22.12.0-linux_amd64": ("node-v22.12.0-linux-x64.tar.xz", "node-v22.12.0-linux-x64", "22982235e1b71fa8850f82edd09cdae7e3f32df1764a9ec298c72d25ef2c164f"), |
| 86 | + "22.12.0-windows_amd64": ("node-v22.12.0-win-x64.zip", "node-v22.12.0-win-x64", "2b8f2256382f97ad51e29ff71f702961af466c4616393f767455501e6aece9b8"), |
| 87 | + }, |
| 88 | + node_version = "22.12.0", |
| 89 | +) |
| 90 | +use_repo(node, "node22_toolchains") |
| 91 | + |
| 92 | +node.toolchain( |
| 93 | + name = "node24", |
| 94 | + node_repositories = NODE_24_REPO, |
| 95 | + node_version = NODE_24_VERSION, |
| 96 | +) |
| 97 | +use_repo(node, "node24_toolchains") |
| 98 | + |
| 99 | +npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm") |
| 100 | +npm.npm_translate_lock( |
| 101 | + name = "npm", |
| 102 | + custom_postinstalls = { |
| 103 | + # TODO: Standardize browser management for `rules_js` |
| 104 | + "webdriver-manager": "node ./bin/webdriver-manager update --standalone false --gecko false --versions.chrome 106.0.5249.21", |
| 105 | + }, |
| 106 | + data = [ |
| 107 | + "//:package.json", |
| 108 | + "//:pnpm-workspace.yaml", |
| 109 | + "//modules/testing/builder:package.json", |
| 110 | + "//packages/angular/build:package.json", |
| 111 | + "//packages/angular/cli:package.json", |
| 112 | + "//packages/angular/pwa:package.json", |
| 113 | + "//packages/angular/ssr:package.json", |
| 114 | + "//packages/angular_devkit/architect:package.json", |
| 115 | + "//packages/angular_devkit/architect_cli:package.json", |
| 116 | + "//packages/angular_devkit/build_angular:package.json", |
| 117 | + "//packages/angular_devkit/build_webpack:package.json", |
| 118 | + "//packages/angular_devkit/core:package.json", |
| 119 | + "//packages/angular_devkit/schematics:package.json", |
| 120 | + "//packages/angular_devkit/schematics_cli:package.json", |
| 121 | + "//packages/ngtools/webpack:package.json", |
| 122 | + "//packages/schematics/angular:package.json", |
| 123 | + "//tests:package.json", |
| 124 | + "//tools/baseline_browserslist:package.json", |
| 125 | + ], |
| 126 | + lifecycle_hooks_envs = { |
| 127 | + # TODO: Standardize browser management for `rules_js` |
| 128 | + "puppeteer": ["PUPPETEER_DOWNLOAD_PATH=./downloads"], |
| 129 | + }, |
| 130 | + lifecycle_hooks_execution_requirements = { |
| 131 | + # Needed for downloading chromedriver. |
| 132 | + # Also `update-config` of webdriver manager would store an absolute path; |
| 133 | + # which would then break execution. |
| 134 | + "webdriver-manager": ["local"], |
| 135 | + }, |
| 136 | + npmrc = "//:.npmrc", |
| 137 | + pnpm_lock = "//:pnpm-lock.yaml", |
| 138 | + verify_node_modules_ignored = "//:.bazelignore", |
| 139 | +) |
| 140 | +use_repo(npm, "npm") |
| 141 | + |
| 142 | +rules_ts_ext = use_extension("@aspect_rules_ts//ts:extensions.bzl", "ext") |
| 143 | +rules_ts_ext.deps( |
| 144 | + # Obtained by: curl --silent https://registry.npmjs.org/typescript/5.9.2 | jq -r '.dist.integrity' |
| 145 | + ts_integrity = "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", |
| 146 | + ts_version_from = "//:package.json", |
| 147 | + name = "angular_cli_npm_typescript", |
| 148 | +) |
| 149 | +use_repo(rules_ts_ext, **{"npm_typescript":"angular_cli_npm_typescript"}) |
| 150 | + |
| 151 | +rules_angular = use_extension("@rules_angular//setup:extensions.bzl", "rules_angular") |
| 152 | +rules_angular.setup( |
| 153 | + name = "components_rules_angular_configurable_deps", |
| 154 | + angular_compiler_cli = "//:node_modules/@angular/compiler-cli", |
| 155 | + typescript = "//:node_modules/typescript", |
| 156 | +) |
| 157 | +use_repo(rules_angular, **{"rules_angular_configurable_deps":"components_rules_angular_configurable_deps"}) |
| 158 | + |
| 159 | +register_toolchains( |
| 160 | + "@devinfra//bazel/git-toolchain:git_linux_toolchain", |
| 161 | + "@devinfra//bazel/git-toolchain:git_macos_x86_toolchain", |
| 162 | + "@devinfra//bazel/git-toolchain:git_macos_arm64_toolchain", |
| 163 | + "@devinfra//bazel/git-toolchain:git_windows_toolchain", |
| 164 | +) |
0 commit comments