build(docs-infra): turn on Ivy (#32923)
The angular.io project uses Angular and CLI v9, which by default turns
on Ivy mode. However, since ec4381dd4
, we explicitly opt out of Ivy.
This commit removes the `enabledIvy: false` configuration, thus allowing
the default behavior of having Ivy on.
NOTE:
This commit only changes the angular.io projects. The docs examples need
to be updated separately (first to Angular and CLI v9 and then to Ivy).
PR Close #32923
This commit is contained in:
parent
bc886a64a7
commit
eb72cecc42
|
@ -347,6 +347,10 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
|
# Compile dependencies to ivy
|
||||||
|
# Running `ngcc` here (instead of implicitly via `ng build`) allows us to take advantage of
|
||||||
|
# the parallel, async mode speed-up (~20-25s on CI).
|
||||||
|
- run: yarn --cwd aio ivy-ngcc --properties es2015
|
||||||
# Build aio
|
# Build aio
|
||||||
- run: yarn --cwd aio build --progress=false
|
- run: yarn --cwd aio build --progress=false
|
||||||
# Lint the code
|
# Lint the code
|
||||||
|
@ -376,7 +380,7 @@ jobs:
|
||||||
|
|
||||||
test_aio_local:
|
test_aio_local:
|
||||||
parameters:
|
parameters:
|
||||||
ivy:
|
viewengine:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
# Needed because the AIO tests and the PWA score test depend on Chrome being available.
|
# Needed because the AIO tests and the PWA score test depend on Chrome being available.
|
||||||
|
@ -385,7 +389,7 @@ jobs:
|
||||||
- custom_attach_workspace
|
- custom_attach_workspace
|
||||||
- init_environment
|
- init_environment
|
||||||
# Build aio (with local Angular packages)
|
# Build aio (with local Angular packages)
|
||||||
- run: yarn --cwd aio build-local<<# parameters.ivy >>-with-ivy<</ parameters.ivy >>-ci
|
- run: yarn --cwd aio build-local<<# parameters.viewengine >>-with-viewengine<</ parameters.viewengine >>-ci
|
||||||
# Run unit tests
|
# Run unit tests
|
||||||
- run: yarn --cwd aio test --progress=false --watch=false
|
- run: yarn --cwd aio test --progress=false --watch=false
|
||||||
# Run e2e tests
|
# Run e2e tests
|
||||||
|
@ -393,7 +397,7 @@ jobs:
|
||||||
# Run PWA-score tests
|
# Run PWA-score tests
|
||||||
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
- run: yarn --cwd aio test-pwa-score-localhost $CI_AIO_MIN_PWA_SCORE
|
||||||
# Check the bundle sizes.
|
# Check the bundle sizes.
|
||||||
- run: yarn --cwd aio payload-size aio-local<<# parameters.ivy >>-ivy<</ parameters.ivy >>
|
- run: yarn --cwd aio payload-size aio-local<<# parameters.viewengine >>-viewengine<</ parameters.viewengine >>
|
||||||
|
|
||||||
test_aio_tools:
|
test_aio_tools:
|
||||||
executor: default-executor
|
executor: default-executor
|
||||||
|
@ -776,8 +780,8 @@ workflows:
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- test_aio_local:
|
- test_aio_local:
|
||||||
name: test_aio_local_ivy
|
name: test_aio_local_viewengine
|
||||||
ivy: true
|
viewengine: true
|
||||||
requires:
|
requires:
|
||||||
- build-npm-packages
|
- build-npm-packages
|
||||||
- test_aio_tools:
|
- test_aio_tools:
|
||||||
|
@ -816,7 +820,7 @@ workflows:
|
||||||
- integration_test
|
- integration_test
|
||||||
# Only publish if `aio`/`docs` tests using the locally built Angular packages pass
|
# Only publish if `aio`/`docs` tests using the locally built Angular packages pass
|
||||||
- test_aio_local
|
- test_aio_local
|
||||||
- test_aio_local_ivy
|
- test_aio_local_viewengine
|
||||||
- test_docs_examples
|
- test_docs_examples
|
||||||
- test_docs_examples_ivy
|
- test_docs_examples_ivy
|
||||||
# Get the artifacts to publish from the build-packages-dist job
|
# Get the artifacts to publish from the build-packages-dist job
|
||||||
|
|
|
@ -18,8 +18,8 @@ Here are the most important tasks you might need to use:
|
||||||
|
|
||||||
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
* `yarn build` - create a production build of the application (after installing dependencies, boilerplate, etc).
|
||||||
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
* `yarn build-local` - same as `build`, but use `setup-local` instead of `setup`.
|
||||||
* `yarn build-local-with-ivy` - same as `build-local`, but in addition also turns on `ivy` mode in aio.
|
* `yarn build-local-with-viewengine` - same as `build-local`, but in addition also turns on `ViewEngine` mode in aio.
|
||||||
(Note: To turn on `ivy` mode in examples, see `yarn boilerplate:add` below.)
|
(Note: Docs examples run in `ViewEngine` mode by default. To turn on `ivy` mode in examples, see `yarn boilerplate:add` below.)
|
||||||
|
|
||||||
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
* `yarn start` - run a development web server that watches the files; then builds the doc-viewer and reloads the page, as necessary.
|
||||||
* `yarn serve-and-sync` - run both the `docs-watch` and `start` in the same console.
|
* `yarn serve-and-sync` - run both the `docs-watch` and `start` in the same console.
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
"build-local": "yarn ~~build",
|
"build-local": "yarn ~~build",
|
||||||
"prebuild-local-ci": "yarn setup-local --no-build-packages",
|
"prebuild-local-ci": "yarn setup-local --no-build-packages",
|
||||||
"build-local-ci": "yarn ~~build --progress=false",
|
"build-local-ci": "yarn ~~build --progress=false",
|
||||||
"prebuild-local-with-ivy": "yarn setup-local && node scripts/switch-to-ivy",
|
"prebuild-local-with-viewengine": "node scripts/switch-to-viewengine && yarn setup-local",
|
||||||
"build-local-with-ivy": "yarn ~~build",
|
"build-local-with-viewengine": "yarn ~~build",
|
||||||
"prebuild-local-with-ivy-ci": "yarn setup-local --no-build-packages && node scripts/switch-to-ivy",
|
"prebuild-local-with-viewengine-ci": "node scripts/switch-to-viewengine && yarn setup-local --no-build-packages",
|
||||||
"build-local-with-ivy-ci": "yarn ~~build --progress=false",
|
"build-local-with-viewengine-ci": "yarn ~~build --progress=false",
|
||||||
"extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js 0a36071b8",
|
"extract-cli-command-docs": "node tools/transforms/cli-docs-package/extract-cli-commands.js 0a36071b8",
|
||||||
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint",
|
"lint": "yarn check-env && yarn docs-lint && ng lint && yarn example-lint && yarn tools-lint",
|
||||||
"test": "yarn check-env && ng test",
|
"test": "yarn check-env && ng test",
|
||||||
|
|
|
@ -2,28 +2,16 @@
|
||||||
"aio": {
|
"aio": {
|
||||||
"master": {
|
"master": {
|
||||||
"uncompressed": {
|
"uncompressed": {
|
||||||
"runtime-es5": 3091,
|
"runtime-es5": 2981,
|
||||||
"runtime-es2015": 3097,
|
"runtime-es2015": 2987,
|
||||||
"main-es5": 480426,
|
"main-es5": 540068,
|
||||||
"main-es2015": 434851,
|
"main-es2015": 494141,
|
||||||
"polyfills-es5": 142239,
|
"polyfills-es5": 142239,
|
||||||
"polyfills-es2015": 52503
|
"polyfills-es2015": 52503
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"aio-local": {
|
"aio-local": {
|
||||||
"master": {
|
|
||||||
"uncompressed": {
|
|
||||||
"runtime-es5": 3091,
|
|
||||||
"runtime-es2015": 3097,
|
|
||||||
"main-es5": 481663,
|
|
||||||
"main-es2015": 436411,
|
|
||||||
"polyfills-es5": 142239,
|
|
||||||
"polyfills-es2015": 52503
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"aio-local-ivy": {
|
|
||||||
"master": {
|
"master": {
|
||||||
"uncompressed": {
|
"uncompressed": {
|
||||||
"runtime-es5": 2981,
|
"runtime-es5": 2981,
|
||||||
|
@ -34,5 +22,17 @@
|
||||||
"polyfills-es2015": 52503
|
"polyfills-es2015": 52503
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"aio-local-viewengine": {
|
||||||
|
"master": {
|
||||||
|
"uncompressed": {
|
||||||
|
"runtime-es5": 3091,
|
||||||
|
"runtime-es2015": 3097,
|
||||||
|
"main-es5": 481663,
|
||||||
|
"main-es2015": 436411,
|
||||||
|
"polyfills-es5": 142239,
|
||||||
|
"polyfills-es2015": 52503
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,16 +4,13 @@
|
||||||
const {extend, parse} = require('cjson');
|
const {extend, parse} = require('cjson');
|
||||||
const {readFileSync, writeFileSync} = require('fs');
|
const {readFileSync, writeFileSync} = require('fs');
|
||||||
const {join, resolve} = require('path');
|
const {join, resolve} = require('path');
|
||||||
const {exec, set} = require('shelljs');
|
|
||||||
|
|
||||||
set('-e');
|
|
||||||
|
|
||||||
// Constants
|
// Constants
|
||||||
const ROOT_DIR = resolve(__dirname, '..');
|
const ROOT_DIR = resolve(__dirname, '..');
|
||||||
const NG_JSON = join(ROOT_DIR, 'angular.json');
|
const NG_JSON = join(ROOT_DIR, 'angular.json');
|
||||||
const NG_COMPILER_OPTS = {
|
const NG_COMPILER_OPTS = {
|
||||||
angularCompilerOptions: {
|
angularCompilerOptions: {
|
||||||
enableIvy: true,
|
enableIvy: false,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -26,7 +23,7 @@ function _main() {
|
||||||
const ngConfig = parse(readFileSync(NG_JSON, 'utf8'));
|
const ngConfig = parse(readFileSync(NG_JSON, 'utf8'));
|
||||||
const tsConfigPath = join(ROOT_DIR, ngConfig.projects.site.architect.build.options.tsConfig);
|
const tsConfigPath = join(ROOT_DIR, ngConfig.projects.site.architect.build.options.tsConfig);
|
||||||
|
|
||||||
// Enable Ivy in TS config.
|
// Enable ViewIngine/Disable Ivy in TS config.
|
||||||
console.log(`\nModifying \`${tsConfigPath}\`...`);
|
console.log(`\nModifying \`${tsConfigPath}\`...`);
|
||||||
const oldTsConfigStr = readFileSync(tsConfigPath, 'utf8');
|
const oldTsConfigStr = readFileSync(tsConfigPath, 'utf8');
|
||||||
const oldTsConfigObj = parse(oldTsConfigStr);
|
const oldTsConfigObj = parse(oldTsConfigStr);
|
||||||
|
@ -35,13 +32,8 @@ function _main() {
|
||||||
console.log(`\nNew config: ${newTsConfigStr}`);
|
console.log(`\nNew config: ${newTsConfigStr}`);
|
||||||
writeFileSync(tsConfigPath, newTsConfigStr);
|
writeFileSync(tsConfigPath, newTsConfigStr);
|
||||||
|
|
||||||
// Run ngcc.
|
|
||||||
const ngccArgs = '--loglevel debug --properties es2015';
|
|
||||||
console.log(`\nRunning ngcc (with args: ${ngccArgs})...`);
|
|
||||||
exec(`yarn ivy-ngcc ${ngccArgs}`);
|
|
||||||
|
|
||||||
// Done.
|
// Done.
|
||||||
console.log('\nReady to build with Ivy!');
|
console.log('\nReady to build with ViewEngine!');
|
||||||
console.log('(To switch back to ViewEngine (with packages from npm), undo the changes in ' +
|
console.log('(To switch back to Ivy (with packages from npm), undo the changes in ' +
|
||||||
`\`${tsConfigPath}\` and run \`yarn aio-use-npm && yarn example-use-npm\`.)`);
|
`\`${tsConfigPath}\` and run \`yarn aio-use-npm && yarn example-use-npm\`.)`);
|
||||||
}
|
}
|
|
@ -239,9 +239,7 @@ describe('site App', function() {
|
||||||
/* tslint:disable:max-line-length */
|
/* tslint:disable:max-line-length */
|
||||||
expect(page.ghLinks.get(0).getAttribute('href'))
|
expect(page.ghLinks.get(0).getAttribute('href'))
|
||||||
.toMatch(/https:\/\/github\.com\/angular\/angular\/edit\/master\/aio\/content\/guide\/http\.md\?message=docs%3A%20describe%20your%20change\.\.\./);
|
.toMatch(/https:\/\/github\.com\/angular\/angular\/edit\/master\/aio\/content\/guide\/http\.md\?message=docs%3A%20describe%20your%20change\.\.\./);
|
||||||
// TODO(gkalpak): This test often times out with Ivy (because loading `guide/http` takes a lot of time).
|
});
|
||||||
// Remove the timeout once the performance issues have been fixed.
|
|
||||||
}, 60000);
|
|
||||||
|
|
||||||
it('should not be present on top level pages', () => {
|
it('should not be present on top level pages', () => {
|
||||||
page.navigateTo('features');
|
page.navigateTo('features');
|
||||||
|
|
|
@ -33,7 +33,4 @@
|
||||||
"scripts",
|
"scripts",
|
||||||
"tools"
|
"tools"
|
||||||
],
|
],
|
||||||
"angularCompilerOptions": {
|
|
||||||
"enableIvy": false,
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue