Skip to content

Commit 26ca25e

Browse files
committed
build: add ng_package interop for rules_js pnpm linking
In order to be able to pnpm-link first-party packages that are using `ng_package`, we technically already need our new `ng_package` rule. That rule is still WIP, so this interop layer allows for the same with the old `ng_package` rule
1 parent 38b91e7 commit 26ca25e

File tree

11 files changed

+56
-1
lines changed

11 files changed

+56
-1
lines changed

src/cdk-experimental/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ ts_project(
1616

1717
ng_package(
1818
name = "npm_package",
19+
package_name = "@angular/cdk-experimental",
1920
srcs = ["package.json"],
2021
tags = ["release-package"],
2122
deps = [get_legacy_label(t) for t in CDK_EXPERIMENTAL_TARGETS],

src/cdk/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ sass_library(
5151
# Creates the @angular/cdk package published to npm.
5252
ng_package(
5353
name = "npm_package",
54+
package_name = "@angular/cdk",
5455
srcs = [
5556
"package.json",
5657
":sass_lib",

src/google-maps/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ ng_project(
3535
# Creates the @angular/google-maps package published to npm
3636
ng_package(
3737
name = "npm_package",
38+
package_name = "@angular/google-maps",
3839
srcs = ["package.json"],
3940
nested_packages = ["//src/google-maps/schematics:npm_package"],
4041
tags = ["release-package"],

src/material-date-fns-adapter/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ ng_web_test_suite(
4141

4242
ng_package(
4343
name = "npm_package",
44+
package_name = "@angular/material-date-fns-adapter",
4445
srcs = ["package.json"],
4546
nested_packages = ["//src/material-date-fns-adapter/schematics:npm_package"],
4647
tags = ["release-package"],

src/material-experimental/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ sass_library(
3434

3535
ng_package(
3636
name = "npm_package",
37+
package_name = "@angular/material-experimental",
3738
srcs = [
3839
"package.json",
3940
":sass_lib",

src/material-luxon-adapter/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ ng_web_test_suite(
4343

4444
ng_package(
4545
name = "npm_package",
46+
package_name = "@angular/material-luxon-adapter",
4647
srcs = ["package.json"],
4748
nested_packages = ["//src/material-luxon-adapter/schematics:npm_package"],
4849
tags = ["release-package"],

src/material-moment-adapter/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ ng_web_test_suite(
4242

4343
ng_package(
4444
name = "npm_package",
45+
package_name = "@angular/material-moment-adapter",
4546
srcs = ["package.json"],
4647
nested_packages = ["//src/material-moment-adapter/schematics:npm_package"],
4748
tags = ["release-package"],

src/material/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ sass_library(
4040
# Creates the @angular/material package published to npm.
4141
ng_package(
4242
name = "npm_package",
43+
package_name = "@angular/material",
4344
srcs = [
4445
"package.json",
4546
":sass_lib",

src/youtube-player/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ sass_binary(
5454

5555
ng_package(
5656
name = "npm_package",
57+
package_name = "@angular/youtube-player",
5758
srcs = ["package.json"],
5859
nested_packages = ["//src/youtube-player/schematics:npm_package"],
5960
tags = ["release-package"],

tools/bazel/ng_package_interop.bzl

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
load("@aspect_rules_js//npm:providers.bzl", "NpmPackageInfo")
2+
load("@aspect_rules_js//js:libs.bzl", "js_lib_helpers")
3+
4+
def _ng_package_interop_impl(ctx):
5+
# forward all npm_package_store_infos
6+
npm_package_store_infos = js_lib_helpers.gather_npm_package_store_infos(
7+
targets = ctx.attr.interop_deps,
8+
)
9+
10+
return [
11+
NpmPackageInfo(
12+
package = ctx.attr.package_name,
13+
version = "0.0.0",
14+
src = ctx.files.src[0],
15+
npm_package_store_infos = npm_package_store_infos,
16+
),
17+
]
18+
19+
ng_package_interop = rule(
20+
implementation = _ng_package_interop_impl,
21+
doc = """
22+
Rule that makes `ng_package` rule output usable with `rules_js`. E.g.
23+
for pnpm workspace linking of such first-party packages.
24+
""",
25+
attrs = {
26+
"package_name": attr.string(mandatory = True),
27+
"src": attr.label(mandatory = True),
28+
"interop_deps": attr.label_list(mandatory = True),
29+
},
30+
)

0 commit comments

Comments
 (0)