The dev-infra package currently uses rollup for packaging. This has been done initially as a way to workaround manifest paths being used in the AMD JavaScript output. The actual solution to this problem is setting module names that match the `package.json` name. This ensures that the package can be consumed correctly in Bazel, and through NPM. This allows us to get rid of the rollup bundling, and we don't need to hard-code which dependencies should be external or included. Additionally, tools that are part of `dev-infra` can now specify their external dependencies simply in the `package.json`. To reduce version duplication, and out-of-sync versions, a new genrule has been created that syncs the versions with the top-level project `package.json`. PR Close #35647
39 lines
850 B
Python
39 lines
850 B
Python
load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm")
|
|
load("@npm_bazel_typescript//:index.bzl", "ts_library")
|
|
|
|
ts_library(
|
|
name = "cli",
|
|
srcs = [
|
|
"cli.ts",
|
|
],
|
|
module_name = "@angular/dev-infra-private",
|
|
deps = [
|
|
"//dev-infra/pullapprove",
|
|
"@npm//@types/node",
|
|
],
|
|
)
|
|
|
|
genrule(
|
|
name = "package-json",
|
|
srcs = [
|
|
"tmpl-package.json",
|
|
"//:package.json",
|
|
],
|
|
outs = ["package.json"],
|
|
cmd = """
|
|
$(location //tools:inline-package-json-deps) $(location tmpl-package.json) \
|
|
$(location //:package.json) $@
|
|
""",
|
|
tools = ["//tools:inline-package-json-deps"],
|
|
)
|
|
|
|
pkg_npm(
|
|
name = "npm_package",
|
|
visibility = ["//visibility:public"],
|
|
deps = [
|
|
":cli",
|
|
":package-json",
|
|
"//dev-infra/ts-circular-dependencies",
|
|
],
|
|
)
|