158 Commits

Author SHA1 Message Date
Charles Lyding
b3d7080147 build: enable esModuleInterop TypeScript option
The `esModuleInterop` option is recommended to be enable by TypeScript and corrects several assumptions TypeScript would otherwise make when importing CommonJS files.
This option change helps ensure compatibility as packages move towards ESM.
Reference: https://www.typescriptlang.org/tsconfig#esModuleInterop
2021-06-13 11:45:55 -04:00
Alan Agius
528b7f182e refactor(@angular-devkit/build-angular): extract webpack configurations from browser builder 2021-06-11 17:20:50 -04: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
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
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
Alan Agius
7587807857 docs(@angular-devkit/build-angular): add more info link to proxyConfig
Closes #20827
2021-05-18 12:30:57 +02: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
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
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
Charles Lyding
27e63e2b33 fix(@angular-devkit/build-angular): mark programmatic builder execution functions as experimental
While the builders when executed via the Angular CLI and their associated options are considered stable, the programmatic APIs are not considered officially supported and are not subject to the breaking change guarantees of SemVer.
The programmatic APIs for the builders are now explicitly marked as experimental. This allows the package to use a stable versioning scheme while also continuing to provide access to the experimental programmatic API elements of the package.
2021-04-14 14:32:37 -04:00
Alan Agius
076ab0f11f refactor: add correct schema keys
With this change
- We replace `id` with `$id`,  this no longer valid in draft-07.
- Replace all `$schemas` to `http://json-schema.org/draft-07/schema`, this is needed to "pin" the schema to `draft-07`.

More information about `draft-07` can be found https://json-schema.org/draft-07/json-schema-release-notes.html
2021-04-13 10:51:12 -04:00
Charles Lyding
d883ce5d7e feat(@angular-devkit/build-angular): upgrade to Webpack 5 throughout the build system
With this change Webpack 5 is now used by the Angular tooling to build applications. Webpack 4 usage and support has been removed.
No project level configuration changes are required to take advantage of the upgraded Webpack version when using the official Angular builders.
Custom builders based on this package that use the experimental programmatic APIs may need to be updated to become compatible with Webpack 5.

BREAKING CHANGE: Webpack 5 lazy loaded file name changes
Webpack 5 generates similar but differently named files for lazy loaded JavaScript files in development configurations (when the `namedChunks` option is enabled).
For the majority of users this change should have no effect on the application and/or build process. Production builds should also not be affected as the `namedChunks` option is disabled by default in production configurations.
However, if a project's post-build process makes assumptions as to the file names then adjustments may need to be made to account for the new naming paradigm.
Such post-build processes could include custom file transformations after the build, integration into service-side frameworks, or deployment procedures.
Example development file name change: `lazy-lazy-module.js` --> `src_app_lazy_lazy_module_ts.js`

BREAKING CHANGE: Webpack 5 web worker support
Webpack 5 now includes web worker support. However, the structure of the URL within the `Worker` constructor must be in a specific format that differs from the current requirement.
Web worker usage should be updated as shown below (where `./app.worker` should be replaced with the actual worker name):
Before: `new Worker('./app.worker', ...)`
After:  `new Worker(new URL('./app.worker', import.meta.url), ...)`
2021-04-08 09:42:47 -04:00
Charles Lyding
a6d886d313 test(@angular-devkit/build-angular): use port 0 in dev-server builder tests
This change updates the remainder of the non-builder harness tests to use a random port when testing. This change reduces the frequency of test flakes as well as improves the opportunity for parallel test execution.
2021-04-07 10:29:49 +02:00
Charles Lyding
119256f72b test(@angular-devkit/build-angular): add dev-server builder port option tests
This change adds expanded unit tests for the dev-server builder's `port` option using the builder test harness.
2021-04-07 10:29:49 +02:00
Charles Lyding
c9a002c04b test(@angular-devkit/build-angular): add initial dev-server builder hmr and liveReload option tests
The CommonJS usage warning tests are moved to use the builder harness for both the `hmr` and `liveReload` options.
2021-04-07 10:29:49 +02:00
Charles Lyding
8c9b2a2589 test(@angular-devkit/build-angular): remove unneeded custom Jasmine test timeouts
The default Jasmine test timeout is set to 2.5 minutes for all builder tests. The smaller timeouts (that are now removed from individual tests) can lead to test flakes especially on CI which can have large performance variability.
2021-04-04 09:07:06 +02:00
Alan Agius
5cf9a08dc7 refactor(@angular-devkit/build-angular): remove deprecated i18n options from server and browser builder
BREAKING CHANGE:

Removal of deprecated browser and server command options.
- `i18nFile`,  use `locales` object in the project metadata instead.
- `i18nFormat`, No longer needed as the format will be determined automatically.
- `i18nLocale`, use `localize` option instead.
2021-04-03 14:45:58 +02:00
Charles Lyding
db4c6baf5a test(@angular-devkit/build-angular): add dev-server builder proxyConfig option tests
This change adds expanded unit tests for the dev-server builder's `proxyConfig` option using the builder test harness.
2021-03-30 14:33:49 -06:00
Charles Lyding
66f1b13eab test(@angular-devkit/build-angular): add dev-server builder servePath option tests
This change adds expanded unit tests for the dev-server builder's `servePath` option using the builder test harness.
2021-03-30 14:33:49 -06:00
Charles Lyding
2041c70f76 test(@angular-devkit/build-angular): add dev-server builder deployUrl behavior tests
This change adds expanded unit tests for the dev-server builder's build deploy URL behavior using the builder test harness.
2021-03-19 06:42:41 -04:00
Charles Lyding
352416fea8 test(@angular-devkit/build-angular): add dev-server builder publicHost option
This change adds expanded unit tests for the dev-server builder's `publicHost` option using the builder test harness.
2021-03-19 06:42:41 -04:00
Charles Lyding
888ac92127 test(@angular-devkit/build-angular): add dev-server builder disableHostCheck option
This change adds expanded unit tests for the dev-server builder's `disableHostCheck` option using the builder test harness.
2021-03-19 06:42:41 -04:00
Charles Lyding
a51eb6e864 test(@angular-devkit/build-angular): add dev-server execute and fetch unit test helper
This change extracts common test code into a helper function to reduce complexity of the dev-server builder unit tests.
2021-03-10 08:17:10 -06:00
Charles Lyding
06a354fb93 test(@angular-devkit/build-angular): add dev-server builder allowedHosts option tests
This change adds expanded unit tests for the dev-server builder's `allowedHosts` option using the builder test harness.
2021-03-10 08:17:10 -06:00
Charles Lyding
037a1b8e9e test(@angular-devkit/build-angular): add dev-server builder build inline critical CSS behavior tests
This change adds expanded unit tests for the dev-server builder's build inline critical CSS behavior using the builder test harness.
2021-03-10 08:17:10 -06:00
Charles Lyding
a24c212203 test(@angular-devkit/build-angular): add dev-server builder build budget behavior tests
This change adds expanded unit tests for the dev-server builder's build budget behavior using the builder test harness.
2021-03-10 08:17:10 -06:00
Charles Lyding
420f4f2655 test(@angular-devkit/build-angular): add dev-server builder verbose option tests
This change adds expanded unit tests for the dev-server builder's `verbose` option using the builder test harness.
2021-03-10 08:17:10 -06:00
Charles Lyding
c9bdfc74ab test(@angular-devkit/build-angular): add dev-server builder watch option tests
This change adds expanded unit tests for the dev-server builder's `watch` option using the builder test harness.
2021-03-10 08:17:10 -06:00
Charles Lyding
e1b3ee6f58 refactor(@angular-devkit/build-angular): use custom babel loader for i18n dev-server support
The custom babel loader allows files to be conditionally processed by the i18n inlining transforms based on both file path and content.
By allowing content based checks, the entire parse/transform/print process can be skipped for files that do not contain localizations.
2021-03-02 14:07:09 -05:00
Alan Agius
52d14d7261 refactor(@angular-devkit/build-angular): remove config barrel file export 2021-02-02 15:21:39 +01:00
Alan Agius
a5bf224527 refactor(@angular-devkit/build-angular): use ES6 imports instead of require
Main benefit is to use type definitions.
2021-02-02 07:46:32 +01:00
Alan Agius
9d973d63f7 test(@angular-devkit/build-angular) use port 0 to fix flakey test 2021-01-29 23:47:17 +01:00
Alan Agius
64aa5703fa docs(@angular-devkit/build-angular): update vendorChunk and commonChunk descriptions 2021-01-20 10:30:28 -05:00
Charles Lyding
6b2a8e175e refactor(@angular-devkit/build-angular): remove virtualfs host usage from browser/dev-server
The virtualfs Host was only used for exist and directory checks during asset and file replacement option normalization within the browser and dev-server builders.
2021-01-20 10:27:43 -05:00
Alan Agius
7cd06b7f23 docs: update optimization and sourceMap descriptions with new links
https://next.angular.io/guide/workspace-config#source-map-configuration
https://next.angular.io/guide/workspace-config#optimization-configuration
2020-12-23 08:25:53 +01:00
Alan Agius
f0d18e990e docs: change sourcemap to source map
The latter is more in used in other articules such as:
-  https://developer.mozilla.org/en-US/docs/Tools/Debugger/How_to/Use_a_source_map
- https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps
2020-12-09 14:36:07 -05:00
Alan Agius
eb30a92e8a feat(@angular-devkit/build-angular): enable inlining of critical CSS optimizations
This is another feature that we mentioned in the Eliminate Render Blocking Requests RFC (#18730)

Inlining of critical CSS is turned off by default. To opt-in this feature set `inlineCritical` to `true`.

Example:
```json
"configurations": {
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ],
    "optimization": {
      "styles": {
        "minify": true,
        "inlineCritical": true,
       }
    },
```

To learn more about critical CSS see;
https://web.dev/defer-non-critical-css
https://web.dev/extract-critical-css/

In a future version of the Angular CLI `inlineCritical` will be enabled by default.

Closes: #17966
Closes: #11395
Closes: #19445
2020-12-04 15:41:29 -05:00
Alan Agius
ee6bb1359f docs: fix elimination typo 2020-12-04 13:42:26 -05:00
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
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
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
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