698 Commits

Author SHA1 Message Date
Alan Agius
9c57e45d4e docs: improve description for optimization, configuration and target options.
Closes #16572
Closes #17978
Closes https://github.com/angular/angular/issues/39780
2020-11-25 09:09:00 +00:00
Alan Agius
d71ee210bf fix(@angular-devkit/build-angular): apply local libraries sourcemap without vendor: true
With this change we apply sourcemaps of libraries in a monorepo without the need to enable `vendor: true`. This is more intuitive behavior and  in line with what the users expect.

We also suppress the `Failed to parse source map from` in-actionable warning.

Closes #11305
2020-11-24 13:33:50 +00:00
Alan Agius
9908b59fd1 fix(@angular-devkit/build-angular): handle HTML file with no body and head tags
Closes #19426
2020-11-20 11:38:04 +00:00
Alan Agius
0b06fd6951 fix(@angular-devkit/build-angular): disable output hashing when running dev-server
Using output hashing with the dev-server can cause memory leaks because the dev server does not know when to clean up the old files.

See: https://github.com/webpack/webpack-dev-server/issues/377#issuecomment-241258405

Closes #10411
2020-11-20 11:37:39 +00:00
Alan Agius
c8aafad607 test(@angular-devkit/build-angular): add test to simulate dotnet proxy 2020-11-18 13:18:16 -05:00
Alan Agius
f67c612393 fix(@angular-devkit/build-angular): ERR_SSL_PROTOCOL_ERROR when using HTTPS reverse proxy
With this change we set the publicHost to `0.0.0.0:0`, when it's not provided.

This solved issues where previously the publicHost needed to be specified directly to get around `ERR_SSL_PROTOCOL_ERROR` error when proxing https -> http.

NB: this was also the behaviour in version 10 c252968225/packages/angular_devkit/build_angular/src/dev-server/index.ts (L170)

Closes #19403
2020-11-17 15:40:43 -05:00
Mike Hartington
0f72ca45c3 fix(@angular-devkit/build-angular): ignore hidden inputs with hmr
Closes #19385
Don't query for hidden inputs when using HMR
2020-11-16 13:14:06 -05:00
Alan Agius
9d82269441 refactor(@angular-devkit/build-angular): clean up index generation part 3
With this change we cleanup the index generation. The `IndexHtmlWebpackPlugin` now extends the base `IndexHtmlGenerator` class which makes it easier to override methods to retrieve compilation assets. This is important for the critical css extraction implementation because Critters needs to access the `assets` from the either the compilation when running in memory or the file-system.
2020-11-16 13:03:12 -05:00
Charles Lyding
48c7a85f0a refactor(@angular-devkit/build-angular): support postcss 8
This change updates the internal postcss plugins to use the postcss 8 API as well as updates the versions of all external plugins to postcss 8 supported versions.
2020-11-16 08:51:30 -05:00
Charles Lyding
3acd694db3 fix(@angular-devkit/build-angular): remove workaround for Webpack 5 sourcemaps
The `webpack-sources` library no longer throws an error when used to process sourcemaps during differential loading.
2020-11-16 08:50:37 -05:00
Alan Agius
715a7a5570 fix(@angular-devkit/build-angular): allow json files in fileReplacement
JSON files a can also be valid fileReplacement when using the `resolveJsonModule` TypeScript feature. This causes JSON files to be resolved as JS modules and hence be part of the TypeScript program.

Closes #19378
2020-11-13 15:53:14 -05:00
Alan Agius
5222a2e9b3 test(@angular-devkit/build-angular): add css file so that a sourcemap can be generated when optimization is enabled 2020-11-12 15:25:28 -05:00
Alan Agius
88a3794524 fix(@angular-devkit/build-angular): show missing karma-coverage error when it's not configured
This fixes an issue where previously `karma-coverage must be installed in order to run code coverage` error was shown incorrectly.

Closes: #19359
2020-11-12 13:53:20 -05:00
Alan Agius
2a1b6b1dc7 fix(@angular-devkit/build-angular): separate initial total size in build output
```
Initial Chunk Files                      | Names                |      Size
main-es5.6f60fbc22c7e19b5d179.js         | main                 | 154.89 kB
main-es2015.6f60fbc22c7e19b5d179.js      | main                 | 135.87 kB
polyfills-es5.0351d1276e488726c8dc.js    | polyfills-es5        | 129.34 kB
polyfills-es2015.904e51532a46df6b991c.js | polyfills            |  36.12 kB
scripts.b7f93721b30caf483f97.js          | scripts              |   3.45 kB
runtime-es2015.76bfea807ccb0a24e182.js   | runtime              |   1.45 kB
runtime-es5.76bfea807ccb0a24e182.js      | runtime              |   1.45 kB
styles.3ff695c00d717f2d2a11.css          | styles               |   0 bytes

                                         | Initial ES5 Total    | 289.13 kB
                                         | Initial ES2015 Total | 176.88 kB
```

Closes #19330
2020-11-12 13:15:59 -05:00
Alan Agius
1237ddacea fix(@angular-devkit/build-angular): properly handle comment removal during font inlining
Closes #19350
2020-11-12 13:15:40 -05:00
Alan Agius
424af28602 fix(@angular-devkit/build-angular): add validation to fileReplacement values
fileReplacement is meant to replace compilation source files (JavaScript or TypeScript) with other compilation source files in the build. With this change we add validation to fail the build when the files have unsupported extensions.

Closes #11451
2020-11-06 21:16:38 +01:00
Charles Lyding
6703a7f987 fix(@angular-devkit/build-angular): convert file replacements to system paths before use
The file replacement normalization generates internal Path objects which are not compatible with Windows system paths when used externally.
2020-11-05 18:45:52 +01:00
Charles Lyding
1479b3e8ed test(@angular-devkit/build-angular): improve resilience of lazy module rebuild test
Rebuild tests that involve file watching can be very flaky on CI.  This change adds a debounce time which is also used in the other rebuild tests within the package.
2020-11-05 08:31:12 +01:00
Charles Lyding
4e168b81c5 refactor(@angular-devkit/build-angular): integrate Ivy Webpack compiler plugin
This change integrates the Ivy Webpack compiler plugin into the browser builder.
When Ivy is enabled, which is the default behavior for applications, this plugin will now be used.
If needed, the previous plugin can still be used by enabling the `NG_BUILD_IVY_LEGACY` environment variable.
2020-11-05 08:31:12 +01:00
Alan Agius
51d6c3cb4c fix(@angular-devkit/build-angular): add default value to progress option 2020-11-05 08:30:14 +01:00
Alan Agius
cc300212de Revert "fix(@angular-devkit/build-angular): don't generate vendor.js.map when vendor sourcemaps is disabled"
This reverts commit b17763b03d7ca1ce5d2a85d2d03d0029b6623339.

Closes #19236
2020-11-03 17:43:53 -06:00
Alan Agius
090fdf0ad3 fix(@angular-devkit/build-angular): reduce clutter in dev-server logs
Add new lines to reduce logs clutter.
2020-11-03 17:42:15 -06:00
Alan Agius
66c3f79fc2 fix(@angular-devkit/build-angular): right align size column and add total bundle size 2020-11-03 17:42:01 -06:00
Alan Agius
814ea664d6 fix(@angular-devkit/build-angular): show bundle sizes with 2 decimal places
Before
```
Initial Chunk Files | Names     | Size
vendor.js           | vendor    | 2.07 MB
polyfills.js        | polyfills | 141.3 kb
main.js             | main      | 55.77 kb
runtime.js          | runtime   | 6.15 kb
styles.css          | styles    | 119 bytes
```

After
```
Initial Chunk Files | Names     | Size
vendor.js           | vendor    | 2.07 MB
polyfills.js        | polyfills | 141.30 kb
main.js             | main      | 55.77 kb
runtime.js          | runtime   | 6.15 kb
styles.css          | styles    | 119 bytes
```
2020-11-03 17:42:01 -06:00
Alan Agius
40c25a1e4f fix(@angular-devkit/build-angular): sort bundle stats by size
Before
```
Initial Chunk Files | Names     | Size
runtime.js          | runtime   | 6.15 kB
main.js             | main      | 56.9 kB
vendor.js           | vendor    | 2.4 MB
polyfills.js        | polyfills | 141 kB
styles.css          | styles    | 119 bytes
```

After
```
vendor.js           | vendor    | 2.07 MB
polyfills.js        | polyfills | 141 kB
main.js             | main      | 55.8 kB
runtime.js          | runtime   | 6.15 kB
styles.css          | styles    | 119 bytes
```
2020-11-03 17:42:01 -06:00
Charles Lyding
c569cd0be8 refactor(@angular-devkit/build-angular): use custom babel preset to configure babel-loader
A custom babel preset is introduced to centralize the configuration of babel within the package.  Application related presets and plugins are now encapsulated within the custom preset which is used via the Webpack babel-loader.  This new custom preset will also provide the integration point for the upcoming Angular linker.
2020-11-03 17:37:59 -06:00
Alan Agius
e0875de786 fix(@angular-devkit/build-angular): remove title attribute from inlined fonts style tag
title is not a valid style tag attribute.

Closes #19271
2020-11-02 13:45:29 -06:00
Charles Lyding
94add3082b fix(@angular-devkit/build-angular): validate extracted i18n messages for duplicates
This change will analyze the extract i18n messages for duplicates and issue warnings for each case.  This provides the same default behavior as the standalone message extractor contained within `@angular/localize`.  Configurability of the behavior of a detected duplicate (ignore, warn, error) will be added in a future feature.
2020-11-02 13:36:49 -06:00
Charles Lyding
54aa8911ef refactor(@angular-devkit/build-angular): separate extract format normalization
This separates the option normalization for the i18n format to a separate function to reduce the size of the main builder function.
2020-11-02 13:36:49 -06:00
Charles Lyding
bbbda81f9e fix(@angular-devkit/build-angular): control legacy ID i18n extraction via TypeScript configuration
This change allows the usage of the legacy i18n message identifier format during extraction to be controlled via the `angularCompilerOptions` option `enableI18nLegacyMessageIdFormat` within the application's TypeScript configuration.
2020-11-02 13:36:49 -06:00
Alan Agius
6cd97b367a fix(@angular-devkit/build-angular): improve network error message during fonts inlining
Closes #19259
2020-11-02 13:36:37 -06:00
Alan Agius
f52fd29165 fix(@ngtools/webpack): show zone.js incompatibility warning when using ES2017+
Closes: #19226
2020-11-02 13:36:04 -06:00
Alan Agius
0d3d679ac2 fix(@angular-devkit/build-angular): improve server builder output logs 2020-11-02 13:35:52 -06:00
Alan Agius
4cee3eb9a5 fix(@angular-devkit/build-angular): show verbose logging when using --verbose and differential loading 2020-11-02 13:35:52 -06:00
Alan Agius
83fab6b494 fix(@angular-devkit/build-angular): improve builder phase reporting 2020-11-02 13:35:52 -06:00
Charles Lyding
ea02b6e947 fix(@angular-devkit/build-angular): re-enable webpack 5 license extraction support
With updates to the `license-webpack-plugin` and adjustments to the web worker plugin configuration, license extraction can now be used with webpack 5.  This change also removes the need to filter out the duplicate asset warning on Webpack 4 that was previously being generated.
2020-10-30 10:18:42 -05:00
Charles Lyding
05cd4d6109 fix(@angular-devkit/build-angular): use source locale with non-localized dev serving
The source locale was intended to be used when building an application; even when not specifically localizing.  This includes setting the HTML `lang` attribute, injecting locale data, and setting `LOCALE_ID` within the application.
2020-10-30 10:16:37 -05:00
Alan Agius
9425ce07a9 refactor(@angular-devkit/build-angular): remove host from index writer 2020-10-28 10:26:16 -04:00
Alan Agius
b45a2adba5 fix(@angular-devkit/build-angular): when optimizing don't wrap function arguments in parenthesis
With this change function and arrow function arguments are not wrapped in parenthesis during the optimization phase.

`wrap_func_args` which is enabled by default in terser will wrap function arguments in parenthesis. Recently this was also changed to wrap lamdas as well:
66c3a5ce66

An increase in bundle size was observed without this change. See: https://github.com/angular/angular/pull/39432#discussion_r512345752
2020-10-27 12:04:44 -04:00
Alan Agius
661c0f248f fix(@angular-devkit/build-angular): correctly index and remove webpack client script in non main chunk
Closes #19219
2020-10-27 10:45:51 -04:00
Alan Agius
c71e1691b9 build: update puppeteer to 5.4.0 2020-10-26 14:20:50 -04:00
Charles Lyding
f6d9028f8b fix(@angular-devkit/build-angular): skip application emit during i18n extraction
The application output files are not needed during an extraction.  Previously the files were emitted to a memory file system and discarded.  This change removes the processing overhead of emitting the files.  It also provides Webpack 5 support due to the internal memory file system no longer being exported.
2020-10-26 13:32:46 -04:00
Charles Lyding
3447709458 test(@angular-devkit/build-angular): remove sole NodeJsAsyncHost usage
The `NodeJsAsyncHost` was only used in one location within a unit test and was not required to be used in that location.
2020-10-26 10:13:59 -04:00
Charles Lyding
e22c196c32 fix(@angular-devkit/build-angular): support emitting AVIF image files 2020-10-23 14:43:18 -04:00
Alan Agius
f122b2f351 fix(@angular-devkit/build-angular): don't add publicHost pathname to sockPath in dev-server
With this change we remove the unintentional breaking change that added publicHost pathname to sockPath instead we now prepend the sockPath with the servePath, which can be either the passed servePath option, baseHref or deployUrl.
2020-10-22 15:49:20 +02:00
Alan Agius
faf650c990 refactor(@angular-devkit/build-angular): remove legacy server bundle guess logic
Closes #16353
2020-10-22 15:49:01 +02:00
Charles Lyding
cc723d8d74 feat(@angular-devkit/build-angular): support following symlinked asset directories
By default subdirectories within a symlinked directory are not searched by a glob.  The new `followSymlinks` option for the longhand form of the `assets` browser builder option now allows opting in to search such subdirectories.
2020-10-21 22:03:24 +02:00
Alan Agius
2298ab865b refactor(@angular-devkit/build-angular): remove deprecated browser build option rebaseRootRelativeCssUrls
BREAKING CHANGE:

Deprecated `rebaseRootRelativeCssUrls` browser builder option has been removed without replacement. This option was used to change root relative URLs in stylesheets to include base HREF and deploy URL and was used only for compatibility and transition as this behavior is non-standard.
2020-10-20 16:53:24 +02:00
Alan Agius
54fc6f1923 refactor(@angular-devkit/build-angular): minor cleanup to dev-server code 2020-10-20 08:51:41 +02:00
Alan Agius
7b77e92338 refactor(@angular-devkit/build-angular): remove allowed webpack and @angular-devkit/build-angular from CommonJsUsageWarnPlugin
These are no longer needed
2020-10-20 08:51:41 +02:00