test(ivy): todo app only includes reflect-metadata in JIT mode (#24677)

Previously the todo app imported reflect-metadata, since it is a dependency
of JIT and the todo app tests run in both JIT and AOT modes. However, the
code doesn't get tree-shaken away in AOT mode.

This change adds a target //packages/core/test/bundling/util:reflect_metadata
which, depending on whether the compile flag is in JIT or AOT mode, either
includes reflect-metadata or is a no-op.

Not including reflect-metadata gets the compressed todo bundle down to 12.5 kB.

PR Close #24677
This commit is contained in:
Alex Rickabaugh 2018-06-22 10:38:30 -07:00 committed by Miško Hevery
parent 34c42836cf
commit 01e7ff682c
7 changed files with 61 additions and 1 deletions

View File

@ -14,6 +14,7 @@ ng_module(
deps = [
"//packages/common",
"//packages/core",
"//packages/core/test/bundling/util:reflect_metadata",
],
)
@ -31,6 +32,7 @@ ng_rollup_bundle(
":todo",
"//packages/common",
"//packages/core",
"//packages/core/test/bundling/util:reflect_metadata",
],
)

View File

@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
import 'reflect-metadata';
import '@angular/core/test/bundling/util/src/reflect_metadata';
import {CommonModule, NgForOf, NgIf} from '@angular/common';
import {Component, Injectable, IterableDiffers, NgModule, defineInjector, ɵNgOnChangesFeature as NgOnChangesFeature, ɵdefineDirective as defineDirective, ɵdirectiveInject as directiveInject, ɵinjectTemplateRef as injectTemplateRef, ɵinjectViewContainerRef as injectViewContainerRef, ɵrenderComponent as renderComponent} from '@angular/core';

View File

@ -0,0 +1,22 @@
package(default_visibility = ["//visibility:public"])
load("//tools:defaults.bzl", "ts_library")
# Either loads reflect-metadata or is a no-op, depending on whether compilation is in JIT mode.
ts_library(
name = "reflect_metadata",
srcs = [
"src/reflect_metadata_jit.ts",
"src/reflect_metadata_legacy.ts",
"src/reflect_metadata_local.ts",
":metadata_switch",
],
module_name = "@angular/core/test/bundling/util/src/reflect_metadata",
)
# See packages/core/BUILD.bazel.
genrule(
name = "metadata_switch",
outs = ["src/reflect_metadata.ts"],
cmd = "echo import \"'./reflect_metadata_$(compile)';\" > $@",
)

View File

@ -0,0 +1,9 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import './reflect_metadata_legacy';

View File

@ -0,0 +1,9 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import 'reflect-metadata';

View File

@ -0,0 +1,9 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
export const UNUSED = true;

View File

@ -0,0 +1,9 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
export const UNUSED = true;