2006 Commits

Author SHA1 Message Date
Alan Agius
1dd3bda57f test: fix failing tests which were not shown
Previously when an unhandled error occured Bazel would mark the suit as passed instead of failed.

See: https://togithub.com/bazelbuild/rules_nodejs/commit/3c4ef58
2021-06-10 16:25:19 +02:00
Alan Agius
dc5a58528a fix(@angular-devkit/build-angular): styles CSS files not available in unit tests
With this change we force styles to be extracted in css files during unit tests.

Closes #21054
2021-06-09 08:00:58 +02:00
Alan Agius
fe1825ae38 test: refactor karma tests to use test harness 2021-06-09 08:00:58 +02:00
Renovate Bot
137bbb7b49 build: update all non-major dependencies 2021-06-08 12:30:32 +02:00
Alan Agius
c43ace7383 fix(@angular-devkit/build-angular): add web-workers in lazy chunks in stats output
Web-workers are not marked as `initial` since their initialization can be guarded.

Closes #21059
2021-06-07 19:29:58 +02:00
Alan Agius
2d0d82ba5b fix(@angular-devkit/build-angular): correctly mark async chunks as non initial in dev-server 2021-06-07 17:09:49 +02:00
Alan Agius
699802d488 perf(@angular-devkit/build-angular): reduce memory usage by cleaning output directory before emitting
Unless `deleteOutputPath` is false, we should clean, this helps reduce assets in tests.
2021-06-07 17:09:27 +02:00
Renovate Bot
c68492797f build: update dependency webpack-merge to v5.8.0 2021-06-07 12:45:36 +02:00
Renovate Bot
9a4b55aa91 build: update all non-major dependencies 2021-06-06 19:07:02 +02:00
Charles Lyding
1168edb8d1 refactor(@angular-devkit/build-angular): add a loose mode for build optimizer enum pass
The `adjust-typescript-enums` plugin now includes an optional loose mode. This mode generates less code for an adjusted enum but differs from the canonical TypeScript enum structure emitted by the TypeScript compiler. This mode is only enabled for packages validated to operate correctly with this structure and is currently limited to first-party Angular packages. The adjusted structure is a variation of the previous build optimizer pass structure but better reflects the runtime behavior of the TypeScript emit structure.
2021-06-04 21:10:06 +02:00
Charles Lyding
5bdd1cbbb7 refactor(@angular-devkit/build-angular): enable babel build optimizer passes for ES2015+ targets
The new babel-based build optimizer passes are now enabled when targetting ES2015 and higher. ES5 targets will currently continue to use the previous build optimizer. ES5 support will require additional refactoring of the downlevelling process as the new build optimizer passes are designed for ES2015 code.
2021-06-04 21:10:06 +02:00
Charles Lyding
f277d951ed refactor(@angular-devkit/build-angular): convert build optimizer passes to babel plugins
The build optimizer passes that are still relevant for Ivy are now implemented as babel plugins.  Using babel has several advantages.  The `babel-loader` is already present within the build pipeline and many packages will already need to be processed by it.  The `babel-loader` also provides the necessary infrastructure to setup babel and link it to the Webpack build system.  This removes the need for the infrastructure code within the build optimizer loader and reduces the build optimizer to only a set of transformation plugins for babel to consume.  The babel plugin architecture also allows for less code to represent similar transformations and provides a variety of helper utilities which further reduces the amount code needed.
The passes are now implemented to be safer when transforming code.  Enum values which contain potential side effects are also no longer altered.  Enums are wrapped in less destructive manner which reduces the likelihood of incorrectly emitting the transformed enum. Class static fields which contain potential side effects are no longer wrapped in pure annotated IIFEs.  Known safe Angular static fields are also wrapped and Angular static fields which are not required in production code are also dropped.
The conversion of the passes not only reduces the amount of code to maintain but also provides a noticeable performance improvement.  Initial tests of a production build of AIO resulted in a ~10% total build time reduction.

Closes #12160
2021-06-04 21:10:06 +02:00
Alan Agius
bd82967523 fix(@angular-devkit/build-angular): show progress during re-builds
With the recent changes in https://github.com/angular/angular-cli/pull/20960 we moved the spinner to be started outside of the progress callback, this causes a side-effect that after `succeed` is called the spinner will stop reporting progress unless it is started again.
2021-06-04 17:55:41 +02:00
Alan Agius
c0106f6e3a refactor(@angular-devkit/build-angular): remove usage of rimraf package
Use Node.JS `rmdirSync` instead.
2021-06-04 15:37:10 +02:00
Charles Lyding
1dd5c28f8d fix(@angular-devkit/build-angular): dispose Sass worker resources on Webpack shutdown
Sass Worker instances and resource requests are now cleaned up when the Webpack compiler is shutdown. This removes the need to unreference the workers upon creation.

Fixes #20985
2021-06-04 08:35:02 +02:00
Charles Lyding
11a414e468 fix(@angular-devkit/build-angular): ensure all Webpack Stats assets are present on rebuilds
Webpack will only provide emitted assets in the returned Stats each rebuild unless the `cachedAssets` option is enabled. This is currently needed for the bundle budget calculations.

Fixes #21038
2021-06-03 22:11:33 +02:00
Alan Agius
3a287beab3 refactor: remove left over webpack version 4 code 2021-06-03 15:12:23 +02:00
Alan Agius
8a8384b70a build: update peerDependencies to support ^12.1.0-next 2021-06-03 13:44:07 +02:00
Renovate Bot
50d405245c build: update dependency webpack-dev-middleware to v5 2021-06-03 10:03:48 +02:00
Renovate Bot
8ca3c2d315 build: update all non-major dependencies 2021-06-03 08:07:59 +02:00
Alan Agius
023d0937c4 perf(@angular-devkit/build-webpack): include only required stats in webpackStats
Until we depend on `webpackStats` in the browser builder we should only included the required stats.

The below are the needed stats;
```
    all: false,
    colors: true,
    hash: true,
    timings: true,
    chunks: true,
    builtAt: true,
    warnings: true,
    errors: true,
    assets: true,
    ids: true,
    entrypoints: true,
```
2021-06-02 18:25:58 +02:00
Alan Agius
2e007b7fe0 refactor(@angular-devkit/build-angular): update SASS worker to provide fromImport.
Since sass 1.33.0, an importer can determine whether it’s being called from an `@import` rule by checking `this.fromImport`. This API, is now being used by `sass-loader` version 12.
2021-06-02 17:17:43 +02:00
Renovate Bot
85e8b59d74 build: update dependency sass-loader to v12 2021-06-02 17:17:43 +02:00
Alan Agius
a41f2ed85c docs(@angular-devkit/build-angular): update includePaths description 2021-06-02 09:17:19 +02:00
Renovate Bot
0553de187c build: update all non-major dependencies 2021-06-02 09:16:03 +02:00
Alan Agius
494cca6426 build: update Webpack to version 5.38.1
With this change we update to `webpack` to `5.38.1`, this also updates `webpack-sources` to `2.3.0`, The latter is causing OOM errors on our CI, but it in real projects the memory usage only increased by a small fraction. Also, the OOM errors don't manifest themselves when the entire test suit is run locally.

Therefore with this change we also disable sourcemap genertation for most of the browser builds to speed up the tests and reduce memery usage.
2021-05-31 12:49:55 +01:00
Charles Lyding
92c9be44fa fix(@angular-devkit/build-angular): correctly ignore inline styles during i18n extraction
Stylesheets are not processed during i18n extraction to improve performance and the rules to support them are intentionally not present.
2021-05-31 12:48:55 +01:00
Alan Agius
f9acdc75ca fix(@angular-devkit/build-angular): provided earlier build feedback in console
With this change we provide earlier feedback in the console during a build. The setup phase can take some times if the project has a large set of dependencies.

We also move several warnings in the dev-server to an earlier phase so that we don't clutter the progress indicator.

Closes #20957
2021-05-31 12:48:00 +01:00
Alan Agius
77f81dc7f7 fix(@angular-devkit/build-angular): do not resolve web-workers in server builds
Web-workers are not supported on the server and therefore we should not try include them in server builds.

Closes #20877
2021-05-31 12:46:50 +01:00
Alan Agius
fb21c4a968 feat(@angular-devkit/build-angular): deprecate protractor builder 2021-05-26 13:27:10 -04:00
Alan Agius
7ff41e4e5a fix(@angular-devkit/build-angular): show --disable-host-check warning only when not using disableHostCheck
Closes #20951
2021-05-26 13:26:46 -04:00
Renovate Bot
6e2c292365 build: update dependency jest-worker to v27 2021-05-26 11:26:07 -04:00
Charles Lyding
459aa2bc6a refactor(@angular-devkit/build-angular): use new inlineStyleFileExtension option for inline component styles
The new `ngtools/webpack` option leverages the inline resource matching syntax combined with a custom loader instead of data URIs. This provides better resource path in loaders that do not yet fully support scheme-based resource requests.
2021-05-26 10:51:33 -04:00
Alan Agius
861a69567c fix(@angular-devkit/build-angular): resolve absolute outputPath properly
Closes #20935
2021-05-26 10:19:16 -04:00
Alan Agius
02bea8cc18 fix(@angular-devkit/build-angular): hide stacktraces from dart-sass errors 2021-05-26 10:17:26 -04:00
Alan Agius
6e07cb19c0 fix(@angular-devkit/build-angular): allow i18n extraction on application that uses web-workers
Closes #20930
2021-05-25 10:54:31 -04:00
Charles Lyding
9433bb6179 fix(@angular-devkit/build-angular): ensure latest inline stylesheet data is used during rebuilds
Fixes: #20904
2021-05-25 09:54:38 -04:00
JoostK
640a749515 perf(@angular-devkit/build-angular): load postcss-preset-env configuration once
Loading the postcss-preset-env plugin includes building a mapping of unsupported
browsers by feature, which is somewhat expensive. In large compilations, this mapping
would be recomputed for each postcss-loader instance, as the plugin was recreated
for each loader invocation. By extracting the plugin instance outside of the dynamic
plugin computation, this overhead is avoided.
2021-05-24 16:26:13 -04:00
George Kalpakas
d1953bf1aa fix(@angular-devkit/build-angular): correctly generate ServiceWorker config on Windows
Since #20518, the generation of the ServiceWorker configuration has been
broken on Windows. The reason is the use of `path.posix.*` methods on
non-POSIX paths, resulting in broken paths. I.e. we ended up with
something like the following:

```js
path.posix.relative('C:\\foo', 'C:\\foo\\bar/baz');
// Expected result: `bar/baz`
// Actual result:   `../C:\\foo\\bar/baz`
```

This caused the config generator to fail to find any files and thus fail
to populate the config with cacheable assets.

This commit fixes this by using platform-specific `path.*` methods for
path manipulation and manually normalizing the path separators before
returning the results.

Fixes #20894
2021-05-24 09:28:55 -04:00
Renovate Bot
92a7d2fe38 build: update dependency copy-webpack-plugin to v9 2021-05-22 08:36:20 -04:00
Renovate Bot
a888138437 build: update dependency source-map-loader to v3 2021-05-22 08:35:56 -04:00
Alan Agius
5855374eb5 fix(@ngtools/webpack): re-emit component stylesheet assets
With this change we re-emit assets referenced in component stylesheets which where uneffected by the change that re-triggered a re-compilation.

Since we cache the the result of processed component CSS, during a re-compilation `postcss-cli-resources` plugin will not run which causes assets to be to emit. With this change we now cache the asset and re-emit them on every change.

Closes #20882
2021-05-21 20:04:32 -04:00
Alan Agius
1ab2ef9a3f perf(@angular-devkit/build-angular): disable CSS optimization parallelism for components styles
Since we rely on child compilations to compile components CSS, using the `parallel` option will cause a significant overhead because each compilation will need to spawn a worker, in this mode the worker limit is not be honored because `css-minimizer-webpack-plugin` spawn and calulators workers during the optimization phase of a compilation and not globally per instance hence causes OOM because a large number of workers to be spawned simultaneously.

Closes #20883
2021-05-21 13:13:05 -04:00
Bjarki
c146e9c086 feat(@angular-devkit/build-angular): enable webpack Trusted Types support
As reported in #20113, webpack triggers a Trusted Types violation when
lazy-loading is used. To mitigate that, enable webpack's Trusted Types
module (introduced in webpack/webpack#9856) using 'angular#bundler' as
the policy name.
2021-05-21 13:10:52 -04:00
Alan Agius
bea90a6130 fix(@angular-devkit/build-angular): don't add .hot-update.js script tags
Closes #20855
2021-05-21 13:07:42 -04:00
Charles Lyding
4dc7cf9529 fix(@angular-devkit/build-angular): ensure Sass worker implementation supports Node.js 12.14
The Worker constructor option for a transfer list is unfortunately not supported until Node.js 12.17. For Node.js versions prior to 12.17, a manual message post is now used to transfer the necessary initialization data to the Sass workers.
2021-05-21 13:07:12 -04:00
Alan Agius
f5f41ea929 perf(@angular-devkit/build-angular): clean no-longer used assets during builds
This reduce memory consumption during re-builds.

```
runtime.ba93f81591909b93394f.hot-update.js.map will be removed
styles.ba93f81591909b93394f.hot-update.js.map will be removed
runtime.ba93f81591909b93394f.hot-update.json will be removed
runtime.ba93f81591909b93394f.hot-update.js will be removed
styles.ba93f81591909b93394f.hot-update.js will be removed
```

See https://github.com/webpack/webpack/issues/12947#issuecomment-812108140 and https://github.com/webpack/webpack/issues/13127
2021-05-18 18:55:18 +02:00
Renovate Bot
2c7e5d9fc9 build: update all non-major dependencies 2021-05-18 13:15:00 +02:00
Alan Agius
7587807857 docs(@angular-devkit/build-angular): add more info link to proxyConfig
Closes #20827
2021-05-18 12:30:57 +02:00
Ryan Lester
d34dc8853d fix(@angular-devkit/build-angular): correctly resolve babel runtime helpers
Closes #20800
2021-05-18 07:08:36 +02:00