diff --git a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx index fd7077707bc..0a86250c98a 100755 --- a/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx +++ b/.aspect/rules/external_repository_action_cache/npm_translate_lock_MzA5NzUwNzMx @@ -4,6 +4,7 @@ .npmrc=-1406867100 .pnpmfile.cjs=-2033668682 adev/shared-docs/pipeline/api-gen/package.json=939673974 +integration/package.json=-239561259 modules/package.json=-1315257891 package.json=288136953 packages/animations/package.json=-678724831 @@ -20,7 +21,7 @@ packages/platform-browser/package.json=-1163479450 packages/router/package.json=860819913 packages/upgrade/package.json=16347051 packages/zone.js/package.json=-1545343303 -pnpm-lock.yaml=481102297 -pnpm-workspace.yaml=-1489095561 +pnpm-lock.yaml=1289250097 +pnpm-workspace.yaml=1973735808 tools/bazel/rules_angular_store/package.json=-239561259 yarn.lock=1099737031 diff --git a/.bazelignore b/.bazelignore index b6f00f7b1e4..76754df5add 100644 --- a/.bazelignore +++ b/.bazelignore @@ -42,6 +42,7 @@ modules/ssr-benchmarks/node_modules # For rules_js adev/shared-docs/pipeline/api-gen/node_modules modules/node_modules +integration/node_modules packages/animations/node_modules packages/common/node_modules packages/localize/node_modules diff --git a/WORKSPACE b/WORKSPACE index 367d3f23b68..1e67f064be8 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -111,6 +111,7 @@ npm_translate_lock( "//:package.json", "//:pnpm-workspace.yaml", "//adev/shared-docs/pipeline/api-gen:package.json", + "//integration:package.json", "//modules:package.json", "//packages/animations:package.json", "//packages/common:package.json", diff --git a/adev/tools/local_deps/index.bzl b/adev/tools/local_deps/index.bzl index 20ee23bdb02..93a4e4332bd 100644 --- a/adev/tools/local_deps/index.bzl +++ b/adev/tools/local_deps/index.bzl @@ -29,7 +29,7 @@ def link_local_packages(all_deps): pkg_name = _angular_dep_to_pkg_name(dep) npm_link( name = _npm_link_name(pkg_name), - target = to_package_label(pkg_name), + target = to_package_label(pkg_name) + "__adev_link", package_name = pkg_name, package_path = native.package_name(), tags = ["manual"], diff --git a/integration/BUILD.bazel b/integration/BUILD.bazel index e69de29bb2d..e82cbba4f55 100644 --- a/integration/BUILD.bazel +++ b/integration/BUILD.bazel @@ -0,0 +1,3 @@ +load("@npm2//:defs.bzl", "npm_link_all_packages") + +npm_link_all_packages() diff --git a/integration/ng-modules-importability/BUILD.bazel b/integration/ng-modules-importability/BUILD.bazel index c34d26f445a..c29d3acf12d 100644 --- a/integration/ng-modules-importability/BUILD.bazel +++ b/integration/ng-modules-importability/BUILD.bazel @@ -8,13 +8,11 @@ ts_project( data = [ "//packages:package_json", ], - interop_deps = [ - "//packages/compiler-cli", - ], tsconfig = "tsconfig.json", deps = [ "//:node_modules/@types/node", "//:node_modules/typescript", + "//integration:node_modules/@angular/compiler-cli", ], ) diff --git a/integration/ng-modules-importability/index.bzl b/integration/ng-modules-importability/index.bzl index b2135922601..5321ea74cdb 100644 --- a/integration/ng-modules-importability/index.bzl +++ b/integration/ng-modules-importability/index.bzl @@ -1,5 +1,5 @@ +load("@aspect_rules_js//js:defs.bzl", "js_test") load("@bazel_skylib//rules:write_file.bzl", "write_file") -load("//tools:defaults.bzl", "nodejs_test") def module_test(name, npm_packages, skipped_entry_points = [], additional_deps = [], **kwargs): write_file( @@ -11,14 +11,13 @@ def module_test(name, npm_packages, skipped_entry_points = [], additional_deps = })], ) - nodejs_test( + js_test( name = "test", data = [ ":%s_config" % name, - "//integration/ng-modules-importability:test_lib", + "//integration/ng-modules-importability:test_lib_rjs", ] + additional_deps + [pkg[0] for pkg in npm_packages.items()], entry_point = "//integration/ng-modules-importability:index.mjs", - enable_linker = True, - templated_args = ["$(rootpath :%s_config)" % name], + fixed_args = ["$(rootpath :%s_config)" % name], **kwargs ) diff --git a/integration/ng-modules-importability/index.mts b/integration/ng-modules-importability/index.mts index ad1627f871a..a9894849966 100644 --- a/integration/ng-modules-importability/index.mts +++ b/integration/ng-modules-importability/index.mts @@ -1,4 +1,4 @@ -import {performCompilation} from '../../packages/compiler-cli/index.js'; +import {performCompilation} from '@angular/compiler-cli'; import * as fs from 'fs/promises'; import * as path from 'path'; import * as os from 'os'; @@ -33,6 +33,11 @@ async function main() { const testChunkStart = testChunkSize * testShardIndex; const shardExports = allExports.slice(testChunkStart, testChunkStart + testChunkSize); + // Sub-test directory where the first-party linked node modules end up being available. + const testDir = path.join(tmpDir, 'test'); + await fs.mkdir(testDir); + await fs.mkdir(path.join(testDir, 'node_modules/@angular'), {recursive: true}); + const testFiles = shardExports.map((e) => ({ content: ` import {NgModule, Component} from '@angular/core'; @@ -46,15 +51,16 @@ async function main() { @Component({imports: [TestModule], template: ''}) export class TestComponent {} `, - path: path.join(tmpDir, `${e.symbolName.toLowerCase()}.ts`), + path: path.join(testDir, `${e.symbolName.toLowerCase()}.ts`), })); // Prepare node modules to resolve e.g. `@angular/core` - await fs.symlink(path.resolve('./node_modules'), path.join(tmpDir, 'node_modules')); + await fs.symlink(path.resolve('./integration/node_modules'), path.join(tmpDir, 'node_modules')); + // Prepare node modules to resolve e.g. `@angular/cdk`. This is possible // as we are inside the sandbox, inside our test runfiles directory. for (const {packagePath, name} of packages) { - await fs.symlink(path.resolve(packagePath), `./node_modules/${name}`); + await fs.symlink(path.resolve(packagePath), path.join(testDir, 'node_modules', name)); } const diagnostics: ts.Diagnostic[] = []; diff --git a/integration/ng-modules-importability/tsconfig.json b/integration/ng-modules-importability/tsconfig.json index fbed92b7dea..8e441986263 100644 --- a/integration/ng-modules-importability/tsconfig.json +++ b/integration/ng-modules-importability/tsconfig.json @@ -3,8 +3,8 @@ "strict": true, "declaration": true, "sourceMap": true, - "module": "node16", - "moduleResolution": "node16", + "module": "esnext", + "moduleResolution": "bundler", "types": ["node"] } } diff --git a/integration/package.json b/integration/package.json new file mode 100644 index 00000000000..9be11972021 --- /dev/null +++ b/integration/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@angular/compiler-cli": "workspace:*" + } +} diff --git a/packages.bzl b/packages.bzl index 8e019c639c5..f8edea56446 100644 --- a/packages.bzl +++ b/packages.bzl @@ -10,7 +10,7 @@ def to_package_label(package_name): return "//packages/misc/angular-in-memory-web-api:npm_package" if package_name == "@angular/docs": - return "//adev/shared-docs:npm_package" + return "//adev/shared-docs:pkg" return "//packages/{package_name}:npm_package".format(package_name = package_name.replace("@angular/", "")) diff --git a/packages/animations/BUILD.bazel b/packages/animations/BUILD.bazel index 70b6fa1e914..4b0f7fd27f0 100644 --- a/packages/animations/BUILD.bazel +++ b/packages/animations/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -21,10 +21,10 @@ ng_project( ng_package( name = "npm_package", - package_name = "@angular/animations", srcs = [ "package.json", ], + package = "@angular/animations", tags = [ "release-with-framework", ], @@ -38,9 +38,9 @@ ng_package( "//packages/compiler/test:__pkg__", ], deps = [ - ":animations", - "//packages/animations/browser", - "//packages/animations/browser/testing", + ":animations_rjs", + "//packages/animations/browser:browser_rjs", + "//packages/animations/browser/testing:testing_rjs", ], ) diff --git a/packages/benchpress/BUILD.bazel b/packages/benchpress/BUILD.bazel index 07164bdb193..3cc17865a99 100644 --- a/packages/benchpress/BUILD.bazel +++ b/packages/benchpress/BUILD.bazel @@ -1,6 +1,5 @@ load("@aspect_rules_ts//ts:defs.bzl", rules_js_tsconfig = "ts_config") -load("//tools:defaults.bzl", "ng_package") -load("//tools:defaults2.bzl", "ts_project") +load("//tools:defaults2.bzl", "ng_package", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -32,7 +31,6 @@ ts_project( ng_package( name = "npm_package", - package_name = "@angular/benchpress", srcs = [ "README.md", "package.json", @@ -41,6 +39,7 @@ ng_package( "@angular/core", "reflect-metadata", ], + package = "@angular/benchpress", # Do not add more to this list. # Dependencies on the full npm_package cause long re-builds. visibility = [ @@ -48,6 +47,6 @@ ng_package( "//modules/ssr-benchmarks:__subpackages__", ], deps = [ - ":benchpress", + ":benchpress_rjs", ], ) diff --git a/packages/common/BUILD.bazel b/packages/common/BUILD.bazel index de8a9e8a642..0a48c7209a5 100644 --- a/packages/common/BUILD.bazel +++ b/packages/common/BUILD.bazel @@ -1,7 +1,7 @@ load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") load("//packages/common/locales:index.bzl", "generate_base_currencies_file") -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -43,6 +43,10 @@ ng_package( "package.json", ], nested_packages = ["//packages/common/locales:package"], + package = "@angular/common", + replace_prefixes = { + "locales/package": "locales/", + }, tags = [ "release-with-framework", ], @@ -62,11 +66,11 @@ ng_package( "//packages/language-service/test:__pkg__", ], deps = [ - "//packages/common", - "//packages/common/http", - "//packages/common/http/testing", - "//packages/common/testing", - "//packages/common/upgrade", + "//packages/common:common_rjs", + "//packages/common/http:http_rjs", + "//packages/common/http/testing:testing_rjs", + "//packages/common/testing:testing_rjs", + "//packages/common/upgrade:upgrade_rjs", ], ) diff --git a/packages/compiler-cli/BUILD.bazel b/packages/compiler-cli/BUILD.bazel index fc9312d5e5b..1e9ec462391 100644 --- a/packages/compiler-cli/BUILD.bazel +++ b/packages/compiler-cli/BUILD.bazel @@ -142,6 +142,12 @@ pkg_npm( ], ) +# TODO(rules_js migration): Remove when adev uses pnpm workspaces. +alias( + name = "npm_package__adev_link", + actual = ":npm_package", +) + # TODO(devversion): Temporary early `npm_package` for making compiler-cli usable in `rules_angular`. # Long-term, `pkg_npm` will be migrated to `npm_package` in general. npm_package( diff --git a/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel b/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel index 6f95d432c9f..9ab394353b4 100644 --- a/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel +++ b/packages/compiler-cli/src/ngtsc/testing/fake_common/BUILD.bazel @@ -1,5 +1,4 @@ -load("//tools:defaults.bzl", "ng_package") -load("//tools:defaults2.bzl", "ts_project") +load("//tools:defaults2.bzl", "ng_package", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -19,7 +18,8 @@ ng_package( srcs = [ "package.json", ], + package = "@angular/common", deps = [ - ":fake_common", + ":fake_common_rjs", ], ) diff --git a/packages/compiler/BUILD.bazel b/packages/compiler/BUILD.bazel index d369670877c..cd9c56cd8db 100644 --- a/packages/compiler/BUILD.bazel +++ b/packages/compiler/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "ng_package", "tsec_test") -load("//tools:defaults2.bzl", "npm_package", "ts_project") +load("//tools:defaults.bzl", "tsec_test") +load("//tools:defaults2.bzl", "ng_package", "npm_package", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -24,6 +24,7 @@ ng_package( srcs = [ "package.json", ], + package = "@angular/compiler", side_effect_entry_points = [ "@angular/compiler", ], @@ -43,7 +44,7 @@ ng_package( "@npm//@angular/build-tooling/shared-scripts:__subpackages__", ], deps = [ - ":compiler", + ":compiler_rjs", ], ) diff --git a/packages/core/BUILD.bazel b/packages/core/BUILD.bazel index 9acb90c0c21..ba084257b0b 100644 --- a/packages/core/BUILD.bazel +++ b/packages/core/BUILD.bazel @@ -1,8 +1,8 @@ load("@build_bazel_rules_nodejs//:index.bzl", "generated_file_test") load("//adev/shared-docs/pipeline/api-gen:generate_api_docs.bzl", "generate_api_docs") load("//packages/common/locales:index.bzl", "generate_base_locale_file") -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "ng_package", "tsec_test") -load("//tools:defaults2.bzl", "ng_project", "npm_package", "ts_config") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "tsec_test") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package", "ts_config") package(default_visibility = ["//visibility:public"]) @@ -68,7 +68,6 @@ tsec_test( ng_package( name = "npm_package", - package_name = "@angular/core", srcs = [ "package.json", ":event_dispatch_contract_binary", @@ -76,6 +75,7 @@ ng_package( nested_packages = [ "//packages/core/schematics:npm_package", ], + package = "@angular/core", tags = [ "release-with-framework", ], @@ -95,12 +95,12 @@ ng_package( "//packages/language-service/test:__pkg__", ], deps = [ - ":core", - "//packages/core/primitives/di", - "//packages/core/primitives/event-dispatch", - "//packages/core/primitives/signals", - "//packages/core/rxjs-interop", - "//packages/core/testing", + ":core_rjs", + "//packages/core/primitives/di:di_rjs", + "//packages/core/primitives/event-dispatch:event-dispatch_rjs", + "//packages/core/primitives/signals:signals_rjs", + "//packages/core/rxjs-interop:rxjs-interop_rjs", + "//packages/core/testing:testing_rjs", ], ) diff --git a/packages/elements/BUILD.bazel b/packages/elements/BUILD.bazel index 1943faaff84..731c769808d 100644 --- a/packages/elements/BUILD.bazel +++ b/packages/elements/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project") package(default_visibility = ["//visibility:public"]) @@ -22,8 +22,8 @@ ng_project( ng_package( name = "npm_package", - package_name = "@angular/elements", srcs = ["package.json"], + package = "@angular/elements", tags = [ "release-with-framework", ], @@ -34,7 +34,7 @@ ng_package( "//modules/ssr-benchmarks:__subpackages__", ], deps = [ - ":elements", + ":elements_rjs", ], ) diff --git a/packages/forms/BUILD.bazel b/packages/forms/BUILD.bazel index fe9b2aba3ca..5286d2550d7 100644 --- a/packages/forms/BUILD.bazel +++ b/packages/forms/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -22,8 +22,8 @@ ng_project( ng_package( name = "npm_package", - package_name = "@angular/forms", srcs = ["package.json"], + package = "@angular/forms", tags = [ "release-with-framework", ], @@ -38,7 +38,7 @@ ng_package( "//packages/language-service/test:__pkg__", ], deps = [ - ":forms", + ":forms_rjs", ], ) diff --git a/packages/localize/BUILD.bazel b/packages/localize/BUILD.bazel index f454ad1104f..3b7f8d19761 100644 --- a/packages/localize/BUILD.bazel +++ b/packages/localize/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "npm_package", "ts_project") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "npm_package", "ts_project") package(default_visibility = ["//visibility:public"]) @@ -20,7 +20,6 @@ ts_project( ng_package( name = "npm_package", - package_name = "@angular/localize", srcs = [ "package.json", ], @@ -28,6 +27,10 @@ ng_package( "//packages/localize/schematics:npm_package", "//packages/localize/tools:npm_package", ], + package = "@angular/localize", + replace_prefixes = { + "tools/npm_package": "tools", + }, side_effect_entry_points = [ "@angular/localize/init", ], @@ -35,8 +38,8 @@ ng_package( "release-with-framework", ], deps = [ - ":localize", - "//packages/localize/init", + ":localize_rjs", + "//packages/localize/init:init_rjs", ], ) diff --git a/packages/misc/angular-in-memory-web-api/BUILD.bazel b/packages/misc/angular-in-memory-web-api/BUILD.bazel index 5bd7d0cb159..380443e2c37 100644 --- a/packages/misc/angular-in-memory-web-api/BUILD.bazel +++ b/packages/misc/angular-in-memory-web-api/BUILD.bazel @@ -1,5 +1,4 @@ -load("//tools:defaults.bzl", "ng_package") -load("//tools:defaults2.bzl", "ng_project") +load("//tools:defaults2.bzl", "ng_package", "ng_project") package(default_visibility = ["//visibility:public"]) @@ -25,7 +24,8 @@ ng_project( ng_package( name = "npm_package", srcs = ["package.json"], + package = "angular-in-memory-web-api", deps = [ - ":angular-in-memory-web-api", + ":angular-in-memory-web-api_rjs", ], ) diff --git a/packages/platform-browser-dynamic/BUILD.bazel b/packages/platform-browser-dynamic/BUILD.bazel index 5a5b718ee7a..20968a5f657 100644 --- a/packages/platform-browser-dynamic/BUILD.bazel +++ b/packages/platform-browser-dynamic/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -27,6 +27,7 @@ ng_package( srcs = [ "package.json", ], + package = "@angular/platform-browser-dynamic", side_effect_entry_points = [ "@angular/platform-browser-dynamic", "@angular/platform-browser-dynamic/testing", @@ -43,8 +44,8 @@ ng_package( "//packages/compiler-cli/integrationtest:__pkg__", ], deps = [ - ":platform-browser-dynamic", - "//packages/platform-browser-dynamic/testing", + ":platform-browser-dynamic_rjs", + "//packages/platform-browser-dynamic/testing:testing_rjs", ], ) diff --git a/packages/platform-browser/BUILD.bazel b/packages/platform-browser/BUILD.bazel index 3306a96ba13..fe9d4001dec 100644 --- a/packages/platform-browser/BUILD.bazel +++ b/packages/platform-browser/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "ng_package", "tsec_test") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "tsec_test") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -35,6 +35,7 @@ ng_package( srcs = [ "package.json", ], + package = "@angular/platform-browser", tags = [ "release-with-framework", ], @@ -48,10 +49,10 @@ ng_package( "//packages/compiler-cli/test:__pkg__", ], deps = [ - ":platform-browser", - "//packages/platform-browser/animations", - "//packages/platform-browser/animations/async", - "//packages/platform-browser/testing", + ":platform-browser_rjs", + "//packages/platform-browser/animations:animations_rjs", + "//packages/platform-browser/animations/async:async_rjs", + "//packages/platform-browser/testing:testing_rjs", ], ) diff --git a/packages/platform-server/BUILD.bazel b/packages/platform-server/BUILD.bazel index e6de736a3f4..99a8980bcaf 100644 --- a/packages/platform-server/BUILD.bazel +++ b/packages/platform-server/BUILD.bazel @@ -1,6 +1,6 @@ load("@build_bazel_rules_nodejs//:index.bzl", "js_library") -load("//tools:defaults.bzl", "api_golden_test_npm_package", "esbuild", "generate_api_docs", "ng_package", "tsec_test") -load("//tools:defaults2.bzl", "ng_project") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "esbuild", "generate_api_docs", "tsec_test") +load("//tools:defaults2.bzl", "ng_package", "ng_project") package(default_visibility = ["//visibility:public"]) @@ -59,6 +59,7 @@ ng_package( externals = [ "xhr2", ], + package = "@angular/platform-server", side_effect_entry_points = [ "@angular/platform-server/init", ], @@ -74,9 +75,9 @@ ng_package( "//packages/compiler-cli/integrationtest:__pkg__", ], deps = [ - ":platform-server", - "//packages/platform-server/init", - "//packages/platform-server/testing", + ":platform-server_rjs", + "//packages/platform-server/init:init_rjs", + "//packages/platform-server/testing:testing_rjs", ], ) diff --git a/packages/private/testing/BUILD.bazel b/packages/private/testing/BUILD.bazel index 523252f2ef1..701b0465c28 100644 --- a/packages/private/testing/BUILD.bazel +++ b/packages/private/testing/BUILD.bazel @@ -16,6 +16,8 @@ ng_project( interop_deps = [ "//packages/platform-server:bundled_domino_lib", ], + # TODO(rules_js migration): testonly targets do not auto-compute a module name right now. + module_name = "@angular/private/testing", deps = [ "//packages/common:common_rjs", "//packages/core:core_rjs", diff --git a/packages/router/BUILD.bazel b/packages/router/BUILD.bazel index 0fd73be2d60..44d67fb5b5e 100644 --- a/packages/router/BUILD.bazel +++ b/packages/router/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -23,10 +23,10 @@ ng_project( ng_package( name = "npm_package", - package_name = "@angular/router", srcs = [ "package.json", ], + package = "@angular/router", tags = [ "release-with-framework", ], @@ -42,9 +42,9 @@ ng_package( "//packages/compiler-cli/test/transformers:__pkg__", ], deps = [ - ":router", - "//packages/router/testing", - "//packages/router/upgrade", + ":router_rjs", + "//packages/router/testing:testing_rjs", + "//packages/router/upgrade:upgrade_rjs", ], ) diff --git a/packages/service-worker/BUILD.bazel b/packages/service-worker/BUILD.bazel index 3ff9e17f346..0e703c48a3c 100644 --- a/packages/service-worker/BUILD.bazel +++ b/packages/service-worker/BUILD.bazel @@ -1,6 +1,6 @@ load("@aspect_rules_ts//ts:defs.bzl", rules_js_tsconfig = "ts_config") -load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project") +load("//tools:defaults.bzl", "api_golden_test", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project") package(default_visibility = ["//visibility:public"]) @@ -47,7 +47,6 @@ genrule( ng_package( name = "npm_package", - package_name = "@angular/service-worker", srcs = [ "package.json", "safety-worker.js", @@ -55,6 +54,7 @@ ng_package( ":ngsw_worker_renamed", "//packages/service-worker/config:schema.json", ], + package = "@angular/service-worker", tags = [ "release-with-framework", ], @@ -65,8 +65,8 @@ ng_package( "//modules/ssr-benchmarks:__subpackages__", ], deps = [ - ":service-worker", - "//packages/service-worker/config", + ":service-worker_rjs", + "//packages/service-worker/config:config_rjs", ], ) diff --git a/packages/upgrade/BUILD.bazel b/packages/upgrade/BUILD.bazel index e07b0d30f37..e5399ae041e 100644 --- a/packages/upgrade/BUILD.bazel +++ b/packages/upgrade/BUILD.bazel @@ -1,5 +1,5 @@ -load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs", "ng_package") -load("//tools:defaults2.bzl", "ng_project", "npm_package") +load("//tools:defaults.bzl", "api_golden_test_npm_package", "generate_api_docs") +load("//tools:defaults2.bzl", "ng_package", "ng_project", "npm_package") package(default_visibility = ["//visibility:public"]) @@ -23,10 +23,10 @@ ng_project( ng_package( name = "npm_package", - package_name = "@angular/upgrade", srcs = [ "package.json", ], + package = "@angular/upgrade", tags = [ "release-with-framework", ], @@ -37,9 +37,9 @@ ng_package( "//modules/ssr-benchmarks:__subpackages__", ], deps = [ - ":upgrade", - "//packages/upgrade/static", - "//packages/upgrade/static/testing", + ":upgrade_rjs", + "//packages/upgrade/static:static_rjs", + "//packages/upgrade/static/testing:testing_rjs", ], ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 666f4ae5be9..efeff76a9c5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -574,6 +574,12 @@ importers: specifier: workspace:* version: link:../../../../packages/compiler-cli + integration: + dependencies: + '@angular/compiler-cli': + specifier: workspace:* + version: link:../packages/compiler-cli + modules: dependencies: '@angular/animations': diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 762a08a9f8f..88e9e7c72fa 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,6 +2,7 @@ packages: - . - adev/shared-docs/pipeline/api-gen - modules + - integration - packages/animations/ - packages/common/ - packages/compiler-cli/ diff --git a/tools/bazel/ng_package.bzl b/tools/bazel/ng_package.bzl new file mode 100644 index 00000000000..24e9464f351 --- /dev/null +++ b/tools/bazel/ng_package.bzl @@ -0,0 +1,106 @@ +load("@rules_angular//src/ng_package:index.bzl", _ng_package = "ng_package") +load("@rules_pkg//:pkg.bzl", "pkg_tar") +load("//tools/bazel:ng_package_link_interop.bzl", "ng_package_link_interop") + +# Packages which are versioned together on npm +ANGULAR_SCOPED_PACKAGES = ["@angular/%s" % p for p in [ + # core should be the first package because it's the main package in the group + # this is significant for Angular CLI and "ng update" specifically, @angular/core + # is considered the identifier of the group by these tools. + "core", + "bazel", + "common", + "compiler", + "compiler-cli", + "animations", + "elements", + "platform-browser", + "platform-browser-dynamic", + "forms", + "platform-server", + "upgrade", + "router", + "language-service", + "localize", + "service-worker", +]] + +PKG_GROUP_REPLACEMENTS = { + "\"NG_UPDATE_PACKAGE_GROUP\"": """[ + %s + ]""" % ",\n ".join(["\"%s\"" % s for s in ANGULAR_SCOPED_PACKAGES]), +} + +def ng_package(name, readme_md = None, license_banner = None, license = None, deps = [], **kwargs): + if not readme_md: + readme_md = "//packages:README.md" + if not license_banner: + license_banner = "//packages:license-banner.txt" + if not license: + license = "//:LICENSE" + visibility = kwargs.pop("visibility", None) + tags = kwargs.pop("tags", []) + + common_substitutions = dict(kwargs.pop("substitutions", {}), **PKG_GROUP_REPLACEMENTS) + substitutions = dict(common_substitutions, **{ + "0.0.0-PLACEHOLDER": "0.0.0", + }) + stamped_substitutions = dict(common_substitutions, **{ + "0.0.0-PLACEHOLDER": "{{STABLE_PROJECT_VERSION}}", + }) + + rollup_runtime_deps = [ + "//:node_modules/@rollup/plugin-commonjs", + "//:node_modules/@rollup/plugin-node-resolve", + "//:node_modules/magic-string", + "//:node_modules/rollup-plugin-dts", + "//:node_modules/rollup-plugin-sourcemaps2", + ] + + _ng_package( + name = name, + deps = deps, + readme_md = readme_md, + license = license, + rollup_runtime_deps = rollup_runtime_deps, + license_banner = license_banner, + substitutions = select({ + "//:stamp": stamped_substitutions, + "//conditions:default": substitutions, + }), + visibility = visibility, + tags = tags, + **kwargs + ) + + _ng_package( + name = "%s_nosub" % name, + deps = deps, + readme_md = readme_md, + license = license, + rollup_runtime_deps = rollup_runtime_deps, + license_banner = license_banner, + substitutions = common_substitutions, + visibility = visibility, + tags = ["manual"], + **kwargs + ) + + pkg_tar( + name = name + "_archive", + srcs = [":%s" % name], + extension = "tar.gz", + strip_prefix = "./%s" % name, + # should not be built unless it is a dependency of another rule + tags = ["manual"], + visibility = visibility, + ) + + # TODO(rules_js migration): Remove when adev uses pnpm workspaces. + ng_package_link_interop( + name = "%s__adev_link" % name, + package = ":%s" % name, + package_name = kwargs.get("package"), + package_path = "adev", + tags = ["manual"], + ) diff --git a/tools/bazel/ng_package_link_interop.bzl b/tools/bazel/ng_package_link_interop.bzl new file mode 100644 index 00000000000..b8e96588d8b --- /dev/null +++ b/tools/bazel/ng_package_link_interop.bzl @@ -0,0 +1,23 @@ +load("@aspect_rules_js//npm:providers.bzl", "NpmPackageInfo") +load("@build_bazel_rules_nodejs//:providers.bzl", "LinkablePackageInfo") + +def _ng_package_link_interop_impl(ctx): + return [ + ctx.attr.package[DefaultInfo], + ctx.attr.package[NpmPackageInfo], + LinkablePackageInfo( + package_name = ctx.attr.package_name, + package_path = ctx.attr.package_path, + path = ctx.files.package[0].path, + files = ctx.attr.package[DefaultInfo].files, + ), + ] + +ng_package_link_interop = rule( + implementation = _ng_package_link_interop_impl, + attrs = { + "package": attr.label(mandatory = True), + "package_name": attr.string(mandatory = True), + "package_path": attr.string(mandatory = True), + }, +) diff --git a/tools/defaults.bzl b/tools/defaults.bzl index 7a0544e23c9..25c79f68b14 100644 --- a/tools/defaults.bzl +++ b/tools/defaults.bzl @@ -17,15 +17,11 @@ load("@npm//@bazel/terser:index.bzl", "terser_minified") load("@npm//typescript:index.bzl", "tsc") load("@rules_pkg//:pkg.bzl", "pkg_tar") load("//adev/shared-docs/pipeline/api-gen:generate_api_docs.bzl", _generate_api_docs = "generate_api_docs") -load("//packages/bazel:index.bzl", _ng_package = "ng_package") load("//tools/bazel:module_name.bzl", "compute_module_name") load("//tools/bazel:tsec.bzl", _tsec_test = "tsec_test") load("//tools/esm-interop:index.bzl", "enable_esm_node_module_loader", _nodejs_binary = "nodejs_binary", _nodejs_test = "nodejs_test") _DEFAULT_TSCONFIG_TEST = "//packages:tsconfig-test" -_INTERNAL_NG_PACKAGE_PACKAGER = "//packages/bazel/src/ng_package:packager" -_INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP_CONFIG_TMPL = "//packages/bazel/src/ng_package:rollup.config.js" -_INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP = "//packages/bazel/src/ng_package/rollup" esbuild_config = _esbuild_config esbuild_esm_bundle = _esbuild_esm_bundle @@ -116,70 +112,6 @@ def ts_library( **kwargs ) -def ng_package(name, readme_md = None, license_banner = None, license = None, deps = [], **kwargs): - """Default values for ng_package""" - if not readme_md: - readme_md = "//packages:README.md" - if not license_banner: - license_banner = "//packages:license-banner.txt" - if not license: - license = "//:LICENSE" - visibility = kwargs.pop("visibility", None) - tags = kwargs.pop("tags", []) - - common_substitutions = dict(kwargs.pop("substitutions", {}), **PKG_GROUP_REPLACEMENTS) - substitutions = dict(common_substitutions, **{ - "0.0.0-PLACEHOLDER": "0.0.0", - }) - stamped_substitutions = dict(common_substitutions, **{ - "0.0.0-PLACEHOLDER": "{STABLE_PROJECT_VERSION}", - }) - - _ng_package( - name = name, - deps = deps, - validate = True, - readme_md = readme_md, - license = license, - license_banner = license_banner, - substitutions = select({ - "//:stamp": stamped_substitutions, - "//conditions:default": substitutions, - }), - ng_packager = _INTERNAL_NG_PACKAGE_PACKAGER, - rollup_config_tmpl = _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP_CONFIG_TMPL, - rollup = _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP, - visibility = visibility, - tags = tags, - **kwargs - ) - - _ng_package( - name = "%s_nosub" % name, - deps = deps, - validate = True, - readme_md = readme_md, - license = license, - license_banner = license_banner, - substitutions = common_substitutions, - ng_packager = _INTERNAL_NG_PACKAGE_PACKAGER, - rollup_config_tmpl = _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP_CONFIG_TMPL, - rollup = _INTERNAL_NG_PACKAGE_DEFAULT_ROLLUP, - visibility = visibility, - tags = ["manual"], - **kwargs - ) - - pkg_tar( - name = name + "_archive", - srcs = [":%s" % name], - extension = "tar.gz", - strip_prefix = "./%s" % name, - # should not be built unless it is a dependency of another rule - tags = ["manual"], - visibility = visibility, - ) - def pkg_npm(name, deps = [], validate = True, **kwargs): """Default values for pkg_npm""" visibility = kwargs.pop("visibility", None) diff --git a/tools/defaults2.bzl b/tools/defaults2.bzl index 188ce7b48cc..14d07812017 100644 --- a/tools/defaults2.bzl +++ b/tools/defaults2.bzl @@ -1,13 +1,14 @@ load("@aspect_rules_jasmine//jasmine:defs.bzl", _jasmine_test = "jasmine_test") load("@aspect_rules_js//npm:defs.bzl", _npm_package = "npm_package") load("@aspect_rules_ts//ts:defs.bzl", _ts_config = "ts_config") -load("@rules_angular//src/ng_package:index.bzl", _ng_package = "ng_package") load("@rules_angular//src/ng_project:index.bzl", _ng_project = "ng_project") load("//tools/bazel:module_name.bzl", "compute_module_name") +load("//tools/bazel:ng_package.bzl", _ng_package = "ng_package") load("//tools/bazel:ts_project_interop.bzl", _ts_project = "ts_project") npm_package = _npm_package ts_config = _ts_config +ng_package = _ng_package def _determine_tsconfig(testonly): if native.package_name().startswith("packages/compiler-cli"): @@ -106,16 +107,3 @@ def jasmine_test(name, data = [], args = [], **kwargs): ], **kwargs ) - -def ng_package(deps = [], **kwargs): - _ng_package( - deps = deps, - rollup_runtime_deps = [ - "//:node_modules/@rollup/plugin-commonjs", - "//:node_modules/@rollup/plugin-node-resolve", - "//:node_modules/magic-string", - "//:node_modules/rollup-plugin-dts", - "//:node_modules/rollup-plugin-sourcemaps2", - ], - **kwargs - )