114 Commits

Author SHA1 Message Date
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
Alan Agius
83fab6b494 fix(@angular-devkit/build-angular): improve builder phase reporting 2020-11-02 13:35:52 -06: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
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
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
Alan Agius
247b87d40a refactor(@angular-devkit/build-angular): move dev-server webpack config in a separate file
With this change we remove webpack dev-server logic to a seperate file. We also use the webpack-dev-server API to add live-reload and hmr entry-points and settings.
2020-10-16 21:08:18 +02:00
Charles Lyding
58a7deac67 fix(@angular-devkit/build-angular): set HTML lang attribute when serving
When using the non-deprecated localization options, the development server was not properly setting the HTML `lang` attribute for the application.  This change ensures that the active locale is used within the application's index HTML file.

Closes #18094
2020-10-15 18:59:32 +02:00
Alan Agius
e1d0d0898d docs(@angular-devkit/build-angular): improve headers option description 2020-10-15 18:30:24 +02:00
Alan Agius
e253fffbe6 refactor(@angular-devkit/build-angular): move addition of HMR plugins and loaders to webpack configs 2020-10-14 21:57:47 +03:00
Alan Agius
c345ec369f test(@angular-devkit/build-angular): test HMR using puppeteer 2020-10-14 21:57:47 +03:00
Alan Agius
e30e578d22 build: update mini-css-extract-plugin to version 1.0.0 2020-10-14 21:57:47 +03:00
Alan Agius
49841f84c5 fix(@angular-devkit/build-angular): include HMR accept code in main.ts
This fixes as issue where in some cases the changed module is not accepted which cases the dev-server to fallback to live-reload.

This is because the hmr.js and main.ts have different module ids.
2020-10-14 21:57:47 +03:00
Alan Agius
871dd6a434 feat(@angular-devkit/build-angular): enable font inlining optimizations
With this change we inline Google fonts and icons in the index html file when optimization is enabled.

**Before**
```html
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
```
**After**
```html
<style>
  @font-face {
    font-family: 'Material Icons';
    font-style: normal;
    font-weight: 400;
    src: url(https://fonts.gstatic.com/s/materialicons/v55/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2) format('woff2');
  }

  .material-icons {
    font-family: 'Material Icons';
    font-weight: normal;
    font-style: normal;
    font-size: 24px;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    display: inline-block;
    white-space: nowrap;
    word-wrap: normal;
    direction: ltr;
  }
</style>
```

To opt-out of this feature set `optimization.fonts: false` or `optimization.fonts.inline: false` in the browser builder options.

Example:
```js
"configurations": {
  "production": {
    "fileReplacements": [
      {
        "replace": "src/environments/environment.ts",
        "with": "src/environments/environment.prod.ts"
      }
    ],
    "optimization": {
      "fonts": false
    },
```

More information about the motivation for this feature can be found: https://github.com/angular/angular-cli/issues/18730

Note: internet access is required during the build for this optimization to work.
2020-10-14 21:57:29 +03:00
Bjarki
db00a24b3c feat(@angular-devkit/build-angular): support custom headers in dev-server
Make it possible to configure dev-server to send custom HTTP headers on
every client request. These headers can be specified as a key-value map
under the new "headers" property of the dev-server builder in
angular.json. These headers are then passed on to the webpack devserver.

An example use case for this is to enable various security features,
such as CSP and Trusted Types, both in local application development and
in integration tests, by setting appropriate HTTP headers.

This is part of an effort to add support for Trusted Types in Angular.
The ability to enforce Trusted Types during development and integration
tests is essential, as this can help detect Trusted Types violations
that might otherwise break applications when they're pushed to
production where such security features may be enforced.
2020-10-13 12:36:19 -04:00
Alan Agius
290fe4360d refactor(@angular-devkit/build-angular): deprecate hmrWarning and servePathDefaultWarning options
With this change we deprecate servePathDefaultWarning and hmrWarning which no longer has an effect.

Using any unsupported deploy-url or base-href serve path value will result in a hard warning.
2020-10-07 09:54:32 -04:00
Alan Agius
f33d10d343 refactor(@angular-devkit/build-angular): deprecate a number of dev-server options
With this change we deprecate a number of dev-server builder options which proxied to the browser builder. This pattern also wrongly assumes that 3rd party browser builders also support all these options.

Configure the below deprecated options directly in the browser builder target options instead.

- aot
- sourceMap
- deployurl
- baseHref
- vendorChunk
- commonChunk
- optimization
- progress
2020-10-07 09:54:32 -04:00
Alan Agius
e96fbd3c8a refactor(@angular-devkit/build-angular): change errors and warnings messages
Sometimes the WARNING IN/ERROR IN can lead of ambiguous messages

 - Use `Warning` instead of `WARNING IN`
-  Use `Error` instead of `Error In`
2020-09-30 16:17:05 +02:00
Charles Lyding
0c112e5d91 feat(@angular-devkit/build-angular): support package references in styles & scripts options
The browser builder's `styles` and `scripts` options now support using a package name in the path when specifying a style or script.  This removes the need to use a relative path to the node modules directory in these options.  This provides support for Yarn PnP as well as reducing the complexity of the options especially for monorepo setups.  Relatively located files will take precedence over packages if they exist.  This precedence provides backwards compatibility with existing configurations.

Before :
`"styles": ["../node_modules/bootstrap/dist/css/bootstrap.css"]`

After:
`"styles": ["bootstrap/dist/css/bootstrap.css"]`
2020-09-25 20:22:04 +02:00
Alan Agius
dbdd3fc857 feat(@angular-devkit/build-angular): out of the box hot module replacement (HMR)
With this change we configure HMR internally and therefore users which want to use basic HMR functionality will not longer be required to change their application code.

This is important because previously a lot of users missed out on HMR or reported a broken behaviour. This also gives novice users a better chance to appreciate HMR and Angular because of the zero effort required to use HMR.

Closes #17324
2020-09-25 20:21:33 +02:00
Joey Perrott
25aa2d5929 refactor: remove usages of the term whitelist 2020-09-24 00:07:10 +03:00
Alan Agius
11c6abdd79 refactor(@angular-devkit/build-angular): clean up differential loading config generation
Closes #16098
2020-09-23 11:22:58 -05:00
Alan Agius
0d10de5cbb refactor(@angular-devkit/build-angular): re-structure folder structure and move code
Previous
```
packages/angular_devkit/build_angular
├── plugins
│   └── webpack
└── src
    ├── angular-cli-files
    │   ├── models
    │   │   └── webpack-configs
    │   ├── plugins
    │   └── utilities
    │       ├── index-file
    │       └── service-worker
    ├── app-shell
    ├── browser
    │   └── specs
    ├── dev-server
    ├── extract-i18n
    ├── karma
    ├── ng-packagr
    ├── protractor
    ├── server
    ├── tslint
    ├── utils
    └── webpack
        └── models
```

Now
```
packages/angular_devkit/build_angular
├── plugins
└── src
    ├── app-shell
    ├── browser
    │   └── specs
    ├── dev-server
    ├── extract-i18n
    ├── karma
    ├── ng-packagr
    ├── protractor
    ├── server
    ├── tslint
    ├── utils
    │   └── index-file
    └── webpack
        ├── configs
        ├── plugins
        └── utils
```
2020-09-14 16:40:39 -04:00
Alan Agius
1ebd7e610d refactor(@angular-devkit/build-angular): use common logging function for webpack stats
With this change we align all builders to have the same output structure.
2020-09-10 16:21:28 +02:00
Charles Lyding
484c94ef0a refactor(@angular-devkit/build-angular): support Webpack with no node shims
Webpack 5+ no longer provides node shims by default.  The dev-server builder previously assumed that Webpack would provide them.  This change adds a conditional check to cover both cases.
2020-09-03 00:20:54 +03:00
Alan Agius
dd260185a1 refactor(@angular-devkit/build-angular): deprecate extractCss browser builder option
BREAKING CHANGE:

Browser builder `extractCss` option default value has been changed from `false` to `true`. This is to reflect the default behaviour when this deprecated option is removed.
2020-08-31 11:54:23 +01:00
Charles Lyding
156e31778f feat(@angular-devkit/build-angular): ask to use a new port if in use
The dev-server builder will now ask the user if an available port can be used when a specified port is already in use.  If the user answers in the affirmative, an available port will be used instead.  Otherwise, the serve operation will fail.  If the terminal is not interactive (for example, CI), the serve operation will fail directly in the event of an already in use port.
2020-08-28 08:52:40 +01:00
Alan Agius
60e8ac2b1e refactor(@angular-devkit/build-angular): improve HMR warning 2020-08-13 20:53:54 +02:00
Alan Agius
24fedb268c feat(@angular-devkit/build-angular): enable HMR for extracted CSS
The latest versions of mini-css-extract-plugin support HMR, see: https://github.com/webpack-contrib/mini-css-extract-plugin#hot-module-reloading-hmr for more details
2020-08-13 20:53:54 +02:00
Charles Lyding
9cd796b124 feat(@angular-devkit/build-angular): support multiple translation files per locale
This change implements the capability to specify multiple translation files per locale. The specified translation files for each locale will be merged prior to localization. The Angular configuration file has been updated to allow for both a single path string or an array of path strings when specifying the translations for each locale. If the same message identifier is present in multiple translation files, a warning will currently be issued and the last file with the duplicate message identifier will take precedence.

Closes #18276
2020-08-13 12:23:59 +02:00
Charles Lyding
4116dddb65 refactor(@angular-devkit/build-angular): cleanup Webpack type usage
These changes simplify type usage in several places as well as cover more usage scenarios with alternate configuration option structures (for example, options that can be arrays or object literals)..
2020-08-12 19:27:00 +01:00
Charles Lyding
2f6b81004b refactor(@angular-devkit/build-angular): cleanup Webpack rule generation
This change reduces the number of variables needed as well as reduces type casting.
2020-08-05 08:17:04 -04:00
Charles Lyding
dd9a396868 refactor(@angular-devkit/build-angular): add webpack diagnostic helpers 2020-07-29 10:53:30 +02:00
Filipe Silva
ef7a07050a test(@angular-devkit/build-angular): build and test with Bazel 2020-04-30 15:12:46 -07:00
Pete Bacon Darwin
b3792deaae fix(@angular-devkit/build-angular): the path to source_file_utils changed in v10.0.0 2020-04-29 10:15:59 -07:00
Alan Agius
8fb7e586cc refactor(@angular-devkit/build-angular): remove deprecated evalSourceMap, vendorSourceMap, profile and skipAppShell options
BREAKING CHANGE:

The following deprecated devkit builders options have been removed:
- `skipAppShell:` This has no effect
- `evalSourceMap`: This done to improve performance in older versions of the CLI and is no longer needed
- `vendorSourceMap`: Use `sourceMap.vendor` instead
- `profile`: Use `NG_BUILD_PROFILING` environment variable instead
2020-04-27 15:08:15 -07:00
Charles Lyding
f5789f466f fix(@angular-devkit/build-angular): ensure live-reload shim workaround isolation
This change reduces the workaround to a single file location as well as ensuring that only the shims of interest from the two necessary live reload files are affected.  This makes sure that build and serve behavior is the same in this regard.
2020-03-10 11:57:31 -07:00
Charles Lyding
8a55bc3115 fix(@angular-devkit/build-angular): ensure babel configurations are isolated
The `configFile` option needs to be set to false to ensure Babel does not attempt to discover and load any file based configurations.
2020-01-28 10:35:18 -08:00
Charles Lyding
0a1743ec2e revert: fix(@angular-devkit/build-angular): sockPath for custom path
This reverts commit 5260bbb9a3d17aefb90bcf1b660e252996cf68df.

Fixes #16410
Fixes #16266
2019-12-12 10:17:30 -08:00
Alan Agius
d155c7c804 fix(@angular-devkit/build-webpack): allow runWebpackDevServer to accept a webpackDevServerFactory 2019-12-02 10:16:08 -08:00
Alan Agius
2960a71807 fix(@angular-devkit/build-angular): pass webpack factor to runWebpackDevServer 2019-12-02 10:16:08 -08:00
Alan Agius
07801363a6 fix(@angular-devkit/build-angular): add pattern validations for browserTarget and serverTarget 2019-11-26 13:07:13 -08:00
Charles Lyding
3d5a5a97a4 fix(@angular-devkit/build-angular): enable dynamic import parsing with serve localization
Fixes #16248
2019-11-26 13:05:30 -08:00
Charles Lyding
adb4139b80 fix(@angular-devkit/build-angular): cache localize results with development server 2019-11-26 13:05:30 -08:00