1234 Commits

Author SHA1 Message Date
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
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
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
Alan Agius
ae07d36024 build: update terser-webpack-plugin to version 5 2021-05-17 19:28:51 +02:00
Charles Lyding
438c6d932e perf(@angular-devkit/build-angular): render Sass using a pool of workers
A pool of Workers is now used to process Sass render requests. This change allows multiple synchronous render operations to occur at the same time. Sass synchronous render operations can be up to two times faster than the asynchronous variant. The benefit will be most pronounced in applications with large amounts of Sass stylesheets.
2021-05-17 10:26:47 +02:00
Alan Agius
2643fb11a9 fix(@angular-devkit/build-angular): non injected styles should not count as initial
Closes #20781
2021-05-14 13:11:11 +02:00
Alan Agius
4367c3a562 fix(@angular-devkit/build-angular): add NG_BUILD_MAX_WORKERS settimgs to control maximum number of workers 2021-05-14 08:29:35 +02:00
Alan Agius
0ebf7569f6 perf(@angular-devkit/build-angular): use CSS optimization plugin that leverages workers
With this change we use `css-minimizer-webpack-plugin` which leverages workers and also webpack cache.
2021-05-14 08:29:35 +02:00
Alan Agius
7df9d19297 fix(@angular-devkit/build-angular): add experimental web-assembly
Closes #20762
2021-05-13 19:36:41 +02:00
Alan Agius
d9566bfac8 perf(@angular-devkit/build-angular): reduce JSON stats
With this change we reduce the size of the JSON stats object, the main benefit that this change brings is that unspecified stats now default to `false`, due to the `all: false` configuration in e992c9a70b/packages/angular_devkit/build_angular/src/webpack/configs/stats.ts (L12)
2021-05-13 19:36:26 +02:00
Alan Agius
80a08b5e53 test: fix formatting in src/webpack/configs/styles.ts 2021-05-13 17:10:28 +02:00
Charles Lyding
cc7f75f25b perf(@angular-devkit/build-angular): execute dart-sass in a worker
The dart-sass Sass implementation will now be executed in a separate worker thread. The wrapper worker implementation provides an interface that can be directly used by Webpack's `sass-loader`.
The worker implementation allows dart-sass to be executed in its synchronous mode which can be up to two times faster than its asynchronous mode. The worker thread also allows Webpack to continue other bundling tasks while the Sass stylesheets are being processed.
2021-05-13 12:30:42 +02:00
Alan Agius
5315791c95 build: fix typings to works with webpack 5.37.0 2021-05-13 06:52:37 +02:00
Alan Agius
678773ffd4 fix(@angular-devkit/build-angular): disable CSS declaration sorting optimizations
CSS declaration orders matters in some cases. This optimization is currently causing broken CSS output.

Closes #20693
2021-05-05 10:17:49 -04:00
Alan Agius
5f6155636d docs: fix typo in showCircularDependencies deprecation message 2021-05-05 10:17:15 -04:00
Alan Agius
e992c9a70b build: update files to be fix eslint header/header failures 2021-05-04 09:59:40 -04:00
Alan Agius
50078ac7b2 refactor(@angular-devkit/build-angular): remove redundant any casting 2021-05-03 11:39:05 -04:00
Charles Lyding
c1512e4274 build: update files to be eslint compliant
All TypeScript files have been updated to pass the new eslint-based linting checks. eslint compatible disabling comments have also been added in place of the previous tslint comments.
2021-05-03 07:31:02 -04:00
Charles Lyding
37a06a7c37 build: format all files
All files are now formatted using the ng-dev tools via prettier.
2021-04-28 16:05:49 -07:00
Alan Agius
7088f3a33b refactor(@angular-devkit/build-angular): replace deprecated webpack.JavascriptModulesPlugin usage
With this change we replace usage of the deprecated `webpack.JavascriptModulesPlugin` with `webpack.javascript.JavascriptModulesPlugin`
2021-04-28 16:37:02 +02:00
Alan Agius
9d6c1dad95 refactor(@angular-devkit/build-angular): remove old worker_threads detection
We now don't support Node 10 hence `worker_threads` are always available.
2021-04-27 15:46:54 +02:00
Alan Agius
38acdb70d5 test(@angular-devkit/build-angular): update HMR test to support new chrome driver 2021-04-27 14:55:18 +02:00
Joey Perrott
003854257c build: migrate all file header to use Google LLC rather than Google Inc 2021-04-27 08:35:22 +02:00
Alan Agius
2d5987102a refactor(@angular-devkit/build-angular): remove no longer needed casting 2021-04-25 11:50:09 +02:00
Charles Lyding
767f0fffdc perf(@angular-devkit/build-angular): avoid async downlevel for known ES2015 code
Library code inside fesm2015/esm2015/_esm2015 directories has been downlevelled to ES2015 which will not have native async/await. As a result, code from those directories can be skipped from the additional checks as well as the downlevel processing. RxJS uses the `_esm2015` directory naming convention.
2021-04-24 09:21:15 +02:00
Alan Agius
b55fc08aa4 fix(@angular-devkit/build-angular): output webpack-dev-server and webpack-dev-middleware errors
With this change we configure `webpack-dev-middleware` and `webpack-dev-server` to print errors to the console, which previously were not displayed. This is because both of these libraries log/emit errors using the logger and the compilation API.

Certain errors such as the one below, were being swallowed during `ng serve`.
```
An unhandled exception occurred: Prevent writing to file that only differs in casing or query string from already written file.
This will lead to a race-condition and corrupted files on case-insensitive file systems.
/home/circleci/ng/aio/dist/generated/docs/api/router/Routes.json
/home/circleci/ng/aio/dist/generated/docs/api/router/ROUTES.json
```
2021-04-23 14:33:55 +02:00
Alan Agius
b2e1d90c63 perf(@angular-devkit/build-angular): improve incremental time during Karma tests
With this change we now use Webpack memory cache when running Karma in watch mode.
2021-04-22 15:40:50 +02:00
Alan Agius
4c8e03256f fix(@angular-devkit/build-angular): remove left-over forkTypeChecker option 2021-04-22 15:40:36 +02:00
Alan Agius
eed56ab839 fix(@angular-devkit/build-angular): avoid triggering file change after file build
When using the `ContextReplacementPlugin` https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/build_angular/src/webpack/configs/common.ts#L496 the new resource path will be watched by Webpack file watcher. This causes a redundant file remove event after the first build, which causes another partial rebuild right way.

Note: changing the call to ` new ContextReplacementPlugin(/\@angular(\\|\/)core(\\|\/)/);` doesn't address the problem.
2021-04-21 12:41:56 -07:00
Charles Lyding
2ac73c75e7 fix(@angular-devkit/build-angular): set Tailwind CSS mode when using Tailwind
Tailwind now suppports an environment variable named `TAILWIND_MODE` with possible values of `build` and `watch`. If the variable has not been set, the tooling will now set the variable based on the builder's `watch` option.
2021-04-21 12:39:39 -07:00
Alan Agius
82ca7d0852 fix(@angular-devkit/build-angular): show warning when using stylus
Stylus is not actively maintained and only 0.3% of the Angular CLI users use it.
2021-04-21 12:39:18 -07:00
Alan Agius
0a74d0d28d fix(@angular-devkit/build-angular): change several builder options defaults
BREAKING CHANGE:

A number of browser and server builder options have had their default values changed. The aim of these changes is to reduce the configuration complexity and support the new "production builds by default" initiative.

**Browser builder**
| Option                                 | Previous default value    | New default value |
|----------------------------------------|---------------------------|-------------------|
| optimization                           | false                     | true              |
| aot                                    | false                     | true              |
| buildOptimizer                         | false                     | true              |
| sourceMap                              | true                      | false             |
| extractLicenses                        | false                     | true              |
| namedChunks                            | true                      | false             |
| vendorChunk                            | true                      | false             |

**Server builder**
| Option        | Previous default value | New default value |
|---------------|------------------------|-------------------|
| optimization  | false                  | true              |
| sourceMap     | true                   | false             |
2021-04-21 12:39:01 -07:00