angular-docs-cn/integration/cli-hello-world-lazy-rollup
George Kalpakas 7f0d7f4d12 build: update lockfiles for integration projects (#33968)
In the `integration_test` CircleCI job, we run `yarn install` on all
projects in the `integration/` directory. If a project has no lockfile
or if the lockfile is out-of-sync with the corresponding `package.json`
file, then the installed dependency versions are no longer pinned, which
can result in different versions being installed between different runs
of the same job (if, for example, a new version is released for a
package) and breaks hermeticity.

This could be prevented by using the `--frozen-lockfile` option with
`yarn install`, but this is not possible with the current setup, because
yarn needs to be able to install the locally built Angular packages,
whose checksums will be different from the ones in the lockfile.
Therefore, we have to manually ensure that the lockfiles remain in-sync
with the corresponding `package.json` files for the rest of the
dependencies.

For example, previously, [cli-hello-world-lazy/yarn.lock][1] had an
entry for `@angular-devkit/build-angular@0.900.0-next.9` (pinned to
`0.900.0-next.9`), but [cli-hello-world-lazy/package.json][2] specified
the `@angular-devkit/build-angular` version as `^0.900.0-rc.0` (note the
leading caret). As a result, since the version in the lock file does not
much the one in `package.json`, the lockfile is ignored and the latest
available version that matches `^0.900.0-rc.0` is installed.

This, for example, started causing unrelated CI failures ([example][3]),
when `@angular-devkit/build-angular@9.0.0-rc.3` was released with a size
improvement.

This commit ensures that all integration projects have a lockfile and
that lockfiles are up-to-date (with the current `package.json` files).

[1]: https://github.com/angular/angular/blob/fc2f6b845/integration/cli-hello-world-lazy/yarn.lock#L13
[2]: https://github.com/angular/angular/blob/fc2f6b845/integration/cli-hello-world-lazy/package.json#L26
[3]: https://circleci.com/gh/angular/angular/535959#tests/containers/2

PR Close #33968
2019-11-26 16:08:32 -08:00
..
e2e test: fix typo in cli e2e descriptions (#33175) 2019-10-21 15:54:06 -04:00
src test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
.editorconfig test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
.gitignore test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
README.md test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
angular.json test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
browserslist test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
check-output-for-ngdevmode.js test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
karma.conf.js test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
package.json build: update to Angular CLI 9.0.0-rc.3 (#33955) 2019-11-21 09:17:18 -08:00
tsconfig.app.json test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
tsconfig.json test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
tsconfig.spec.json test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
tslint.json test: add integration test for lazy chunks in cli apps using experimentalRollupPass (#32957) 2019-10-21 11:27:43 -04:00
yarn.lock build: update lockfiles for integration projects (#33968) 2019-11-26 16:08:32 -08:00

README.md

CliHelloWorldLazyRollup

This test checks bundle sizes when there is a lazy module and experimentalRollupPass is used. It also checks if the ngDevMode global variable and string references in packages/core/src/util/ng_dev_mode.ts are correctly removed.

This test contains a lazy route to ensure ngDevMode removal happens even across chunks, and a payload size check in ../_payload-limits.json to ensure extra code is not retained accidentally.