test(ivy): Add bazel flag to control building ViewEngine or Ivy (#23833)
PR Close #23833
This commit is contained in:
parent
db2329ef6a
commit
1b6b936ef4
|
@ -9,7 +9,10 @@ ng_module(
|
||||||
"*.ts",
|
"*.ts",
|
||||||
"src/**/*.ts",
|
"src/**/*.ts",
|
||||||
],
|
],
|
||||||
),
|
exclude = ["src/ivy_switch.ts"],
|
||||||
|
) + [
|
||||||
|
":ivy_switch",
|
||||||
|
],
|
||||||
module_name = "@angular/core",
|
module_name = "@angular/core",
|
||||||
deps = [
|
deps = [
|
||||||
"//packages:types",
|
"//packages:types",
|
||||||
|
@ -30,3 +33,20 @@ ng_package(
|
||||||
"//packages/core/testing",
|
"//packages/core/testing",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
## Controls if Ivy is enabled. (Temporary target until we permanently switch over to Ivy)
|
||||||
|
##
|
||||||
|
## This file generates `src/ivy_switch.ts` file which reexports symbols for `ViewEngine` or `Ivy.`
|
||||||
|
## - append `--define=ivy=false` (default) to `bazel` command to reexport `./ivy_switch_false`
|
||||||
|
## and use `ViewEngine`;
|
||||||
|
## - append `--define=ivy=true` to `bazel` command to rexport `./ivy_switch_true` and use `Ivy`;
|
||||||
|
##
|
||||||
|
## NOTE: `--define=ivy=true` works with any `bazel` command or target across the repo.
|
||||||
|
##
|
||||||
|
## See: `//tools/bazel.rc` where `--define=ivy=false` is defined as default.
|
||||||
|
## See: `./src/ivy_switch.ts` for more details.
|
||||||
|
genrule(
|
||||||
|
name = "ivy_switch",
|
||||||
|
outs = ["src/ivy_switch.ts"],
|
||||||
|
cmd = "echo export '*' from \"'./ivy_switch_$(ivy)';\" > $@",
|
||||||
|
)
|
||||||
|
|
|
@ -15,6 +15,7 @@ export {ChangeDetectorStatus as ɵChangeDetectorStatus, isDefaultChangeDetection
|
||||||
export {Console as ɵConsole} from './console';
|
export {Console as ɵConsole} from './console';
|
||||||
export {inject as ɵinject, setCurrentInjector as ɵsetCurrentInjector} from './di/injector';
|
export {inject as ɵinject, setCurrentInjector as ɵsetCurrentInjector} from './di/injector';
|
||||||
export {APP_ROOT as ɵAPP_ROOT} from './di/scope';
|
export {APP_ROOT as ɵAPP_ROOT} from './di/scope';
|
||||||
|
export {ivyEnabled as ɵivyEnabled} from './ivy_switch';
|
||||||
export {ComponentFactory as ɵComponentFactory} from './linker/component_factory';
|
export {ComponentFactory as ɵComponentFactory} from './linker/component_factory';
|
||||||
export {CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver} from './linker/component_factory_resolver';
|
export {CodegenComponentFactoryResolver as ɵCodegenComponentFactoryResolver} from './linker/component_factory_resolver';
|
||||||
export {ReflectionCapabilities as ɵReflectionCapabilities} from './reflection/reflection_capabilities';
|
export {ReflectionCapabilities as ɵReflectionCapabilities} from './reflection/reflection_capabilities';
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/**
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This file is used to control if the default rendering pipeline should be `ViewEngine` or `Ivy`.
|
||||||
|
*
|
||||||
|
* Reexport from:
|
||||||
|
* - `./ivy_switch_false` => Use `ViewEngine`.
|
||||||
|
* - `./ivy_switch_true` => Use `Ivy`.
|
||||||
|
*
|
||||||
|
* This file is here for your IDE as well as for `google3`. The `bazel` build system
|
||||||
|
* specifically excludes this file and instead generates a new file which is controlled by
|
||||||
|
* command line:
|
||||||
|
*
|
||||||
|
* - `bazel build packages/core` => Use `ViewEngine`
|
||||||
|
* - `bazel build packages/core --define=ivy=true` => Use `Ivy`
|
||||||
|
*
|
||||||
|
* See: `bazel build packages/core:ivy_switch` for more details.
|
||||||
|
*
|
||||||
|
* ## How to use this
|
||||||
|
*
|
||||||
|
* Use this mechanism to have the same symbol be aliased to different implementation.
|
||||||
|
* 1) Create two implementations of a symbol (most likely a `function` or a `class`).
|
||||||
|
* 2) Export the two implementation under same name in `./ivy_switch_false` and `./ivy_switch_false`
|
||||||
|
* respectively.
|
||||||
|
* 3) Import the symbol from `./ivy_switch`. The imported symbol will that point to either the
|
||||||
|
* symbol in `./ivy_switch_false` and `./ivy_switch_false` depending on the compilation mode.
|
||||||
|
*/
|
||||||
|
export * from './ivy_switch_false';
|
|
@ -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 ivyEnabled = false;
|
|
@ -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 ivyEnabled = true;
|
|
@ -53,3 +53,10 @@ test --experimental_ui
|
||||||
################################
|
################################
|
||||||
|
|
||||||
# Bazel flags for CircleCI are in /.circleci/bazel.rc
|
# Bazel flags for CircleCI are in /.circleci/bazel.rc
|
||||||
|
|
||||||
|
################################
|
||||||
|
# Temporary Settings for Ivy #
|
||||||
|
################################
|
||||||
|
# to determine if the compiler used should be Ivy or ViewEngine one can use `--define=ivy=true` on
|
||||||
|
# any bazel target. This is a temporary flag until codebase is permanently switched to ViewEngine.
|
||||||
|
build --define=ivy=false
|
Loading…
Reference in New Issue