-
Notifications
You must be signed in to change notification settings - Fork 11.9k
build: migrate @angular-devkit/architect
to npm_package
#29312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
load("@aspect_bazel_lib//lib:copy_to_bin.bzl", "copy_to_bin") | ||
load("@aspect_bazel_lib//lib:expand_template.bzl", "expand_template") | ||
load("@aspect_bazel_lib//lib:jq.bzl", "jq") | ||
load("@aspect_bazel_lib//lib:utils.bzl", "to_label") | ||
load("@aspect_rules_js//npm:defs.bzl", _npm_package = "npm_package") | ||
load("@rules_pkg//:pkg.bzl", "pkg_tar") | ||
load("//tools:link_package_json_to_tarballs.bzl", "link_package_json_to_tarballs") | ||
load("//tools:snapshot_repo_filter.bzl", "SNAPSHOT_REPO_JQ_FILTER") | ||
load("//tools:substitutions.bzl", "NO_STAMP_PACKAGE_SUBSTITUTIONS", "get_npm_package_substitutions_for_rjs") | ||
|
||
def npm_package( | ||
name, | ||
deps = [], | ||
visibility = None, | ||
pkg_deps = [], | ||
pkg_json = "package.json", | ||
**kwargs): | ||
if name != "pkg": | ||
fail("Expected npm_package to be named `pkg`. " + | ||
"This is needed for pnpm workspace integration.") | ||
|
||
# Merge package.json with root package.json and perform various substitutions to | ||
# prepare it for release. For jq docs, see https://stedolan.github.io/jq/manual/. | ||
jq( | ||
name = "basic_substitutions", | ||
# Note: this jq filter relies on the order of the inputs | ||
# buildifier: do not sort | ||
srcs = ["//:package.json", pkg_json], | ||
filter_file = "//tools:package_json_release_filter.jq", | ||
args = ["--slurp"], | ||
out = "substituted/package.json", | ||
) | ||
|
||
# Copy package.json files to bazel-out so we can use their bazel-out paths to determine | ||
# the corresponding package npm package tgz path for substitutions. | ||
copy_to_bin( | ||
name = "package_json_copy", | ||
srcs = [pkg_json], | ||
) | ||
pkg_deps_copies = [] | ||
for pkg_dep in pkg_deps: | ||
pkg_label = to_label(pkg_dep) | ||
if pkg_label.name != "package.json": | ||
fail("ERROR: only package.json files allowed in pkg_deps of pkg_npm macro") | ||
pkg_deps_copies.append("@%s//%s:package_json_copy" % (pkg_label.workspace_name, pkg_label.package)) | ||
|
||
# Substitute dependencies on other packages in this repo with tarballs. | ||
link_package_json_to_tarballs( | ||
name = "tar_substitutions", | ||
src = "substituted/package.json", | ||
pkg_deps = [":package_json_copy"] + pkg_deps_copies, | ||
out = "substituted_with_tars/package.json", | ||
) | ||
|
||
# Substitute dependencies on other packages in this repo with snapshot repos. | ||
jq( | ||
name = "snapshot_repo_substitutions", | ||
srcs = ["substituted/package.json"], | ||
filter = SNAPSHOT_REPO_JQ_FILTER, | ||
out = "substituted_with_snapshot_repos/package.json", | ||
) | ||
|
||
expand_template( | ||
name = "final_package_json", | ||
template = select({ | ||
# Do local tar substitution if config_setting is true. | ||
"//:package_json_use_tar_deps": "substituted_with_tars/package.json", | ||
# Do snapshot repo substitution if config_setting is true. | ||
"//:package_json_use_snapshot_repo_deps": "substituted_with_snapshot_repos/package.json", | ||
"//conditions:default": "substituted/package.json", | ||
}), | ||
out = "substituted_final/package.json", | ||
substitutions = NO_STAMP_PACKAGE_SUBSTITUTIONS, | ||
stamp_substitutions = get_npm_package_substitutions_for_rjs(), | ||
) | ||
|
||
_npm_package( | ||
name = "npm_package", | ||
visibility = visibility, | ||
# Note: Order matters here! Last file takes precedence after replaced prefixes. | ||
srcs = deps + [":final_package_json"], | ||
replace_prefixes = { | ||
"substituted_final/": "", | ||
"substituted_with_tars/": "", | ||
"substituted_with_snapshot_repos/": "", | ||
"substituted/": "", | ||
}, | ||
allow_overwrites = True, | ||
**kwargs | ||
) | ||
|
||
# Note: For now, in hybrid mode with RNJS and RJS, we ensure | ||
# both `:pkg` and `:npm_package` work. | ||
native.alias( | ||
name = "pkg", | ||
actual = ":npm_package", | ||
) | ||
|
||
if pkg_json: | ||
pkg_tar( | ||
name = "npm_package_archive", | ||
srcs = [":pkg"], | ||
extension = "tgz", | ||
strip_prefix = "./npm_package", | ||
visibility = visibility, | ||
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
load("//tools:interop.bzl", _ts_project = "ts_project") | ||
load("//tools/bazel:npm_package.bzl", _npm_package = "npm_package") | ||
|
||
def ts_project(**kwargs): | ||
_ts_project(**kwargs) | ||
|
||
def npm_package(**kwargs): | ||
_npm_package(**kwargs) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
load("//:constants.bzl", "RELEASE_ENGINES_NODE", "RELEASE_ENGINES_NPM", "RELEASE_ENGINES_YARN") | ||
|
||
NPM_PACKAGE_SUBSTITUTIONS = { | ||
# Version of the local package being built, generated via the `--workspace_status_command` flag. | ||
"0.0.0-PLACEHOLDER": "{STABLE_PROJECT_VERSION}", | ||
"0.0.0-EXPERIMENTAL-PLACEHOLDER": "{STABLE_PROJECT_EXPERIMENTAL_VERSION}", | ||
"BUILD_SCM_HASH-PLACEHOLDER": "{BUILD_SCM_ABBREV_HASH}", | ||
"0.0.0-ENGINES-NODE": RELEASE_ENGINES_NODE, | ||
"0.0.0-ENGINES-NPM": RELEASE_ENGINES_NPM, | ||
"0.0.0-ENGINES-YARN": RELEASE_ENGINES_YARN, | ||
# The below is needed for @angular/ssr FESM file. | ||
"\\./(.+)/packages/angular/ssr/third_party/beasties": "../third_party/beasties/index.js", | ||
} | ||
|
||
NO_STAMP_PACKAGE_SUBSTITUTIONS = dict(NPM_PACKAGE_SUBSTITUTIONS, **{ | ||
"0.0.0-PLACEHOLDER": "0.0.0", | ||
"0.0.0-EXPERIMENTAL-PLACEHOLDER": "0.0.0", | ||
}) | ||
|
||
def get_npm_package_substitutions_for_rjs(): | ||
result = {} | ||
for key, value in NPM_PACKAGE_SUBSTITUTIONS.items(): | ||
# in `rules_js`, or `expand_template` from `bazel-lib`, stamp variables | ||
# can only be retrieved via `{{X}}` syntax. | ||
result[key] = value.replace("{", "{{").replace("}", "}}") | ||
return result |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NIT: maybe a more meaningful filename? (
defaults-interop
) etc..There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, we'll rename that in a follow-up. Probably
bazel/ts_project_interop.bzl