diff --git a/integration/bazel/src/BUILD.bazel b/integration/bazel/src/BUILD.bazel index bcc424e978..b5fa77975b 100644 --- a/integration/bazel/src/BUILD.bazel +++ b/integration/bazel/src/BUILD.bazel @@ -13,6 +13,7 @@ exports_files(["tsconfig.json"]) ng_module( name = "src", srcs = glob(["*.ts"]), + generate_ve_shims = True, deps = [ "//src/hello-world", "@npm//@angular/common", diff --git a/integration/bazel/src/hello-world/BUILD.bazel b/integration/bazel/src/hello-world/BUILD.bazel index ac31c92e07..0afa1133a2 100644 --- a/integration/bazel/src/hello-world/BUILD.bazel +++ b/integration/bazel/src/hello-world/BUILD.bazel @@ -17,6 +17,7 @@ ng_module( exclude = ["*.spec.ts"], ), assets = [":hello-world-styles"], + generate_ve_shims = True, deps = [ "@npm//@angular/core", "@npm//@types", diff --git a/modules/benchmarks/src/class_bindings/BUILD.bazel b/modules/benchmarks/src/class_bindings/BUILD.bazel index 3d31a6e196..c50b483053 100644 --- a/modules/benchmarks/src/class_bindings/BUILD.bazel +++ b/modules/benchmarks/src/class_bindings/BUILD.bazel @@ -10,6 +10,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*.spec.ts"], ), + generate_ve_shims = True, deps = [ "//packages:types", "//packages/common", diff --git a/modules/benchmarks/src/expanding_rows/BUILD.bazel b/modules/benchmarks/src/expanding_rows/BUILD.bazel index ea7b593633..19ba89b5a4 100644 --- a/modules/benchmarks/src/expanding_rows/BUILD.bazel +++ b/modules/benchmarks/src/expanding_rows/BUILD.bazel @@ -10,6 +10,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*.spec.ts"], ), + generate_ve_shims = True, deps = [ "//packages:types", "//packages/common", diff --git a/modules/benchmarks/src/largeform/ng2/BUILD.bazel b/modules/benchmarks/src/largeform/ng2/BUILD.bazel index 8ede44f9fe..59f0413ccd 100644 --- a/modules/benchmarks/src/largeform/ng2/BUILD.bazel +++ b/modules/benchmarks/src/largeform/ng2/BUILD.bazel @@ -9,6 +9,7 @@ package(default_visibility = ["//modules/benchmarks:__subpackages__"]) ng_module( name = "ng2", srcs = glob(["*.ts"]), + generate_ve_shims = True, # FIXME-IVY(FW-998): ExpressionTranslatorVisitor#visitWriteKeyExpr is not implemented. tags = ["fixme-ivy-aot"], tsconfig = "//modules/benchmarks:tsconfig-build.json", diff --git a/modules/benchmarks/src/largetable/ng2/BUILD.bazel b/modules/benchmarks/src/largetable/ng2/BUILD.bazel index 4e9cc0a8fa..933b10f7f4 100644 --- a/modules/benchmarks/src/largetable/ng2/BUILD.bazel +++ b/modules/benchmarks/src/largetable/ng2/BUILD.bazel @@ -10,6 +10,7 @@ package(default_visibility = ["//modules/benchmarks:__subpackages__"]) ng_module( name = "ng2", srcs = glob(["*.ts"]), + generate_ve_shims = True, tsconfig = "//modules/benchmarks:tsconfig-build.json", # TODO: FW-1004 Type checking is currently not complete. type_check = False, diff --git a/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel b/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel index 73d85effd7..a0a4d2e4b0 100644 --- a/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel +++ b/modules/benchmarks/src/largetable/ng2_switch/BUILD.bazel @@ -7,6 +7,7 @@ package(default_visibility = ["//modules/benchmarks:__subpackages__"]) ng_module( name = "ng2_switch", srcs = glob(["*.ts"]), + generate_ve_shims = True, tsconfig = "//modules/benchmarks:tsconfig-build.json", # TODO: FW-1004 Type checking is currently not complete. type_check = False, diff --git a/modules/benchmarks/src/tree/ng2/BUILD.bazel b/modules/benchmarks/src/tree/ng2/BUILD.bazel index ca4df157bc..c5fe531e3c 100644 --- a/modules/benchmarks/src/tree/ng2/BUILD.bazel +++ b/modules/benchmarks/src/tree/ng2/BUILD.bazel @@ -10,6 +10,7 @@ package(default_visibility = ["//modules/benchmarks:__subpackages__"]) ng_module( name = "ng2", srcs = glob(["*.ts"]), + generate_ve_shims = True, tsconfig = "//modules/benchmarks:tsconfig-build.json", # TODO: FW-1004 Type checking is currently not complete. type_check = False, diff --git a/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel b/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel index 75ca9fe25d..17844d3970 100644 --- a/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel +++ b/modules/benchmarks/src/tree/ng2_switch/BUILD.bazel @@ -7,6 +7,7 @@ package(default_visibility = ["//modules/benchmarks:__subpackages__"]) ng_module( name = "ng2_switch", srcs = glob(["*.ts"]), + generate_ve_shims = True, tsconfig = "//modules/benchmarks:tsconfig-build.json", # TODO: FW-1004 Type checking is currently not complete. type_check = False, diff --git a/modules/benchmarks/src/views/BUILD.bazel b/modules/benchmarks/src/views/BUILD.bazel index f6f3e0a197..aacd52d789 100644 --- a/modules/benchmarks/src/views/BUILD.bazel +++ b/modules/benchmarks/src/views/BUILD.bazel @@ -9,6 +9,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*.spec.ts"], ), + generate_ve_shims = True, deps = [ "//packages:types", "//packages/common", diff --git a/packages/bazel/src/builders/files/src/BUILD.bazel.template b/packages/bazel/src/builders/files/src/BUILD.bazel.template index 55ce79d62e..442e9ffa8b 100644 --- a/packages/bazel/src/builders/files/src/BUILD.bazel.template +++ b/packages/bazel/src/builders/files/src/BUILD.bazel.template @@ -38,6 +38,7 @@ ng_module( "**/*.css", "**/*.html", ]) + ([":styles"] if len(glob(["**/*.scss"])) else []), + generate_ve_shims = True, deps = [ "@npm//@angular/core", "@npm//@angular/platform-browser", diff --git a/packages/bazel/src/ng_module.bzl b/packages/bazel/src/ng_module.bzl index fa7734c0c3..0c8fc222c4 100644 --- a/packages/bazel/src/ng_module.bzl +++ b/packages/bazel/src/ng_module.bzl @@ -208,11 +208,14 @@ def _expected_outs(ctx): if short_path.endswith(".ts") and not short_path.endswith(".d.ts"): basename = short_path[len(package_prefix):-len(".ts")] if (len(factory_basename_set.to_list()) == 0 or basename in factory_basename_set.to_list()): - devmode_js = [ - ".ngfactory.js", - ".ngsummary.js", - ".js", - ] + if _generate_ve_shims(ctx): + devmode_js = [ + ".ngfactory.js", + ".ngsummary.js", + ".js", + ] + else: + devmode_js = [".js"] # Only ngc produces .json files, they're not needed in Ivy. if is_legacy_ngc: @@ -293,7 +296,18 @@ def _expected_outs(ctx): i18n_messages = i18n_messages_files, ) +# Determines if we need to generate View Engine shims (.ngfactory and .ngsummary files) +def _generate_ve_shims(ctx): + # we are checking the workspace name here, because otherwise this would be a breaking change + # (the shims used to be on by default) + # we can remove this check once angular/components and angular/angular-cli repos no longer depend + # on the presence of shims, or if they explicitly opt-in to their generation via ng_modules' generate_ve_shims attr + return _is_bazel() and _is_view_engine_enabled(ctx) or ( + getattr(ctx.attr, "generate_ve_shims", False) == True or ctx.workspace_name != "angular" + ) + def _ngc_tsconfig(ctx, files, srcs, **kwargs): + generate_ve_shims = _generate_ve_shims(ctx) outs = _expected_outs(ctx) is_legacy_ngc = _is_view_engine_enabled(ctx) if "devmode_manifest" in kwargs: @@ -305,8 +319,8 @@ def _ngc_tsconfig(ctx, files, srcs, **kwargs): "enableResourceInlining": ctx.attr.inline_resources, "generateCodeForLibraries": False, "allowEmptyCodegenFiles": True, - "generateNgFactoryShims": True, - "generateNgSummaryShims": True, + "generateNgFactoryShims": True if generate_ve_shims else False, + "generateNgSummaryShims": True if generate_ve_shims else False, # Summaries are only enabled if Angular outputs are to be produced. "enableSummariesForJit": is_legacy_ngc, "enableIvy": _is_ivy_enabled(ctx), @@ -771,6 +785,8 @@ NG_MODULE_RULE_ATTRS = dict(dict(COMMON_ATTRIBUTES, **NG_MODULE_ATTRIBUTES), **{ executable = True, cfg = "host", ), + # Should the rule generate ngfactory and ngsummary shim files? + "generate_ve_shims": attr.bool(default = False), }) ng_module = rule( diff --git a/packages/compiler-cli/integrationtest/bazel/injectable_def/app/BUILD.bazel b/packages/compiler-cli/integrationtest/bazel/injectable_def/app/BUILD.bazel index a692dcbd9f..51520c6e29 100644 --- a/packages/compiler-cli/integrationtest/bazel/injectable_def/app/BUILD.bazel +++ b/packages/compiler-cli/integrationtest/bazel/injectable_def/app/BUILD.bazel @@ -10,6 +10,7 @@ ng_module( "src/**/*.ts", ], ), + generate_ve_shims = True, module_name = "app_built", deps = [ "//packages/compiler-cli/integrationtest/bazel/injectable_def/lib2", diff --git a/packages/examples/common/BUILD.bazel b/packages/examples/common/BUILD.bazel index 552dc825ef..d048b59e14 100644 --- a/packages/examples/common/BUILD.bazel +++ b/packages/examples/common/BUILD.bazel @@ -9,6 +9,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*_spec.ts"], ), + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/examples/core/BUILD.bazel b/packages/examples/core/BUILD.bazel index 7b74d1738a..212ec97079 100644 --- a/packages/examples/core/BUILD.bazel +++ b/packages/examples/core/BUILD.bazel @@ -12,6 +12,7 @@ ng_module( "**/*_howto.ts", ], ), + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/examples/forms/BUILD.bazel b/packages/examples/forms/BUILD.bazel index 367aa52f2d..2166e514bc 100644 --- a/packages/examples/forms/BUILD.bazel +++ b/packages/examples/forms/BUILD.bazel @@ -9,6 +9,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*_spec.ts"], ), + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/examples/router/activated-route/BUILD.bazel b/packages/examples/router/activated-route/BUILD.bazel index f55d990320..9abc261f20 100644 --- a/packages/examples/router/activated-route/BUILD.bazel +++ b/packages/examples/router/activated-route/BUILD.bazel @@ -8,6 +8,7 @@ ng_module( srcs = glob( ["**/*.ts"], ), + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/examples/service-worker/push/BUILD.bazel b/packages/examples/service-worker/push/BUILD.bazel index fc0d167395..32062c838c 100644 --- a/packages/examples/service-worker/push/BUILD.bazel +++ b/packages/examples/service-worker/push/BUILD.bazel @@ -9,6 +9,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*_spec.ts"], ), + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/examples/service-worker/registration-options/BUILD.bazel b/packages/examples/service-worker/registration-options/BUILD.bazel index ad62153d4e..12e392dfd6 100644 --- a/packages/examples/service-worker/registration-options/BUILD.bazel +++ b/packages/examples/service-worker/registration-options/BUILD.bazel @@ -9,6 +9,7 @@ ng_module( ["**/*.ts"], exclude = ["**/*_spec.ts"], ), + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/examples/upgrade/upgrade_example.bzl b/packages/examples/upgrade/upgrade_example.bzl index 51928ead15..8878aa7d8b 100644 --- a/packages/examples/upgrade/upgrade_example.bzl +++ b/packages/examples/upgrade/upgrade_example.bzl @@ -12,6 +12,7 @@ def create_upgrade_example_targets(name, srcs, e2e_srcs, entry_module, assets = ng_module( name = "%s_sources" % name, srcs = srcs, + generate_ve_shims = True, # TODO: FW-1004 Type checking is currently not complete. type_check = False, deps = [ diff --git a/packages/router/test/aot_ngsummary_test/BUILD.bazel b/packages/router/test/aot_ngsummary_test/BUILD.bazel index 7f8646ada7..fc804c6b82 100644 --- a/packages/router/test/aot_ngsummary_test/BUILD.bazel +++ b/packages/router/test/aot_ngsummary_test/BUILD.bazel @@ -4,6 +4,7 @@ ng_module( name = "aot_routing_module", testonly = True, srcs = ["aot_router_module.ts"], + generate_ve_shims = True, deps = [ "//packages/core", "//packages/router",