mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
In production mode, the `ngDevMode` global may not have been declared.
This is typically not a problem, as optimizers should have removed all
usages of the `ngDevMode` variables. This does however require the
bundler/optimizer to have been configured in a certain way, as to allow
for `ngDevMode` guarded code to be removed.
As an example, Terser can be configured to remove the `ngDevMode`
guarded code using the following configuration:
```js
const terserOptions = {
// ...
compress: {
// ...
global_defs: require('@angular/compiler-cli').GLOBAL_DEFS_FOR_TERSER,
}
}
```
(Taken from https://github.com/angular/angular/issues/31595#issuecomment-519129090)
If this is not done, however, the bundle should still work (albeit with
larger code size due to missed tree-shaking opportunities). This commit
adds a check for whether `ngDevMode` has been declared, as it is a
top-level statement that executes before `ngDevMode` has been initialized.
Fixes #31595
PR Close #39415
|
||
|---|---|---|
| .. | ||
| snapshots | ||
| .gitignore | ||
| package.json | ||
| README.md | ||
| side-effects.json | ||
| yarn.lock | ||
This test checks if the side effects for loading Angular packages have changed using https://github.com/filipesilva/check-side-effects.
Running yarn test will check all ES modules listed in side-effects.json.
Running yarn update will update any changed side effects.
To add a new ES module to this test, add a new entry in side-effects.json.
Usually the ESM and FESM should have the same output, but retained objects that were renamed during the flattening step will leave behind a different name.