217db9b216
Within an Angular package, it can happen that there are entry-points which do not contain features that belong into an `@NgModule` or need metadata files to be generated. For example: the `cdk`, `cdk/testing` and `cdk/coercion` entry-points. Besides other entry-points in the `cdk` package, those entry-points do not need metadata to be generated and no not use the `ng_module` rule. Currently the "ng_package" rule properly picks up such entry-points and builds bundles, does downleveling etc. The only thing it misses is that no `package.json` files are generated for the entry-point. This means that consumers will not be able to use these entry-points built with "ts_library" (except accessing the individual bundlings explicitly). The "ng_package" rule should follow the full APF specification for such entry-points. Partially building bundles and doing the downleveling is confusing and a breaking issue. The motifivation of supporting this (besides making the rule behavior consistent; the incomplete output is not acceptable), is that using the "ng_module" rule does not make sense to be used for non-Angular entry-points. Especially since it depends on Angular packages to be specified as Bazel action inputs just to compile vanilla TypeScript with `@angular/compiler-cli`. PR Close #32610
90 lines
2.3 KiB
Python
90 lines
2.3 KiB
Python
load("//tools:defaults.bzl", "jasmine_node_test", "nodejs_binary", "ts_library")
|
|
|
|
exports_files(["package.json"])
|
|
|
|
# The tests in this package must run in separate targets, since they change
|
|
# working directory and therefore have mutable global state that causes test
|
|
# isolation failures.
|
|
|
|
ts_library(
|
|
name = "core_spec_lib",
|
|
testonly = True,
|
|
srcs = ["core_package.spec.ts"],
|
|
deps = [
|
|
"//packages:types",
|
|
"//packages/private/testing",
|
|
"@npm//@types/shelljs",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "core_package",
|
|
srcs = [":core_spec_lib"],
|
|
data = [
|
|
"//packages/core:npm_package",
|
|
"@npm//@types/shelljs",
|
|
"@npm//shelljs",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "common_spec_lib",
|
|
testonly = True,
|
|
srcs = ["common_package.spec.ts"],
|
|
deps = [
|
|
"//packages:types",
|
|
"//packages/private/testing",
|
|
"@npm//@types/shelljs",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "common_package",
|
|
srcs = [":common_spec_lib"],
|
|
data = [
|
|
"//packages/common:npm_package",
|
|
"@npm//shelljs",
|
|
],
|
|
)
|
|
|
|
ts_library(
|
|
name = "example_spec_lib",
|
|
testonly = True,
|
|
srcs = ["example_package.spec.ts"],
|
|
deps = [
|
|
"//packages:types",
|
|
"@npm//@types/diff",
|
|
],
|
|
)
|
|
|
|
jasmine_node_test(
|
|
name = "example_package",
|
|
srcs = [":example_spec_lib"],
|
|
data = [
|
|
"example_package.golden",
|
|
"example_with_ts_library_package.golden",
|
|
"//packages/bazel/test/ng_package/example:npm_package",
|
|
"//packages/bazel/test/ng_package/example-with-ts-library:npm_package",
|
|
],
|
|
# We don't want to run the example_package golden test with Ivy yet. Currently the golden
|
|
# file is based on non-ivy output and therefore won't work for ngc and Ivy at the same time.
|
|
# TODO: We should be able to have another golden for ivy-aot as well.
|
|
tags = ["no-ivy-aot"],
|
|
deps = ["@npm//diff"],
|
|
)
|
|
|
|
nodejs_binary(
|
|
name = "example_package.accept",
|
|
testonly = True,
|
|
data = [
|
|
"example_package.golden",
|
|
"example_with_ts_library_package.golden",
|
|
":example_spec_lib",
|
|
"//packages/bazel/test/ng_package/example:npm_package",
|
|
"//packages/bazel/test/ng_package/example-with-ts-library:npm_package",
|
|
"@npm//diff",
|
|
],
|
|
entry_point = ":example_package.spec.ts",
|
|
templated_args = ["--accept"],
|
|
)
|