656 Commits

Author SHA1 Message Date
Dmitriy Shekhovtsov
38023fe41c fix(@angular-devkit/build-angular): fixed afterOptimizeChunkAssets is deprecated in webpack 5 2020-09-29 11:35:20 +02:00
Alan Agius
8d0922eb7d fix(@angular-devkit/build-angular): resolve i18n outFile from workspaceRoot 2020-09-28 21:24:10 +02:00
Alan Agius
bda8bc8b70 test(@angular-devkit/build-angular): fix unit test setup to be able to run new Ivy extraction 2020-09-28 21:24:10 +02:00
Alan Agius
e0244d05de feat(@angular-devkit/build-angular): enable Ivy extraction by default for Ivy applications 2020-09-28 21:24:10 +02:00
Dmitriy Shekhovtsov
c8f8640bf5 fix(@angular-devkit/build-angular): fixed Module.issuer is deprecated in webpack 5 for commonjs warn plugin 2020-09-28 20:34:18 +02:00
Alan Agius
1ec4ea6659 refactor(@angular-devkit/build-angular): use architect build error instead of logger.error 2020-09-28 15:58:26 +02:00
Alan Agius
0a406e8dd0 refactor(@angular-devkit/build-angular) remove _loadTslint method 2020-09-28 15:34:56 +02:00
Alan Agius
96bee9c6a5 refactor(@angular-devkit/build-angular): remove redundant tslint version check
Tslint has been added as an optional peer dependency which makes this check unnecessary since the package manager will issue a warning when an incorrect version is installed.
2020-09-28 15:34:56 +02:00
Alan Agius
1c4d358b38 fix(@angular-devkit/build-angular): implement relative method in extractor FS
This will be needed when the changes in angular/angular#39006 is merged.
2020-09-28 13:58:31 +02:00
Dmitriy Shekhovtsov
92f3889f98 fix(@angular-devkit/build-angular): maxModules were deprecated and renamed to modulesSpace 2020-09-28 13:57:38 +02:00
Dmitriy Shekhovtsov
eb8872aeee fix(@angular-devkit/build-angular): webpack5 deprecation of module property in Dependency 2020-09-28 11:23:41 +02:00
Charles Lyding
1873f2d28f fix(@angular-devkit/build-angular): add tslint as an optional peer dependency
tslint is currently used by the tslint builder within this package but is not represented in the dependencies. The can lead to accidental version mismatches as well as package manager hoisting problems due to the package manager not knowing the full dependency set of the package.
2020-09-25 23:10:56 +02:00
Charles Lyding
7fed4cf7f7 style(@angular-devkit/build-angular): remove unneeded no-implicit-dependencies rule disabling 2020-09-25 23:10:56 +02:00
Charles Lyding
5bbac0774f fix(@angular-devkit/build-angular): add karma as an optional peer dependency
karma is currently used by the karma builder within this package but is not represented in the dependencies.  The can lead to accidental version mismatches as well as package manager hoisting problems due to the package manager not knowing the full dependency set of the package.
2020-09-25 23:10:56 +02:00
Charles Lyding
cdb404bd3c fix(@angular-devkit/build-angular): warn if using unsupported IE9/10 browsers
As of Angular v11, IE9 and IE10 are no longer officially supported.  A warning will now be shown during builds if these browsers are requested in the project's browserslist configuration.
2020-09-25 22:46:04 +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
Alan Agius
64f340d93f feat(@angular-devkit/build-angular): extract i18n messages from libraries
Closes #18871
2020-09-25 17:59:21 +02:00
Charles Lyding
93e2438954 test(@angular-devkit/build-angular): test Ivy specific files in unused file tests
The test was previously run only in Ivy mode but with VE specific test case files.  The test now also enables strict templates to ensure template type checking files are properly excluded.
2020-09-24 14:30:15 +02:00
Alan Agius
b9c98ee5f1 fix(@angular-devkit/build-angular): add missing defaults to optimization property 2020-09-24 14:27:25 +02:00
Joey Perrott
25aa2d5929 refactor: remove usages of the term whitelist 2020-09-24 00:07:10 +03:00
Alan Agius
ce17094e0e refactor(@angular-devkit/build-angular): lazy require speed-measure-webpack-plugin 2020-09-23 11:22:58 -05:00
Alan Agius
ee14ab0193 refactor(@angular-devkit/build-angular): use optional chaining operator where possible in browser builder 2020-09-23 11:22:58 -05:00
Alan Agius
a73c947205 refactor(@angular-devkit/build-angular): use architect builder output error instead of logger 2020-09-23 11:22:58 -05:00
Alan Agius
76557029a9 style: add proper indentation to RXJS pipe operators 2020-09-23 11:22:58 -05: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
f10f910ec9 refactor(@angular-devkit/build-angular): remove esVersionInFileName build option
This option can be determined via `wco.differentialLoadingMode`
2020-09-23 11:22:58 -05:00
Alan Agius
33f5b60069 refactor(@angular-devkit/build-angular): remove target parameter from BuildBrowserFeatures ctor 2020-09-23 11:22:58 -05:00
Alan Agius
8d770ed0db test: remove test which is no longer relevent
We removed webpack specific build logs from the CLI, therefore this test is no longer relevant.
2020-09-22 10:29:53 -05:00
Alan Agius
d3ad09508f refactor(@angular-devkit/architect): remove deprecated TestLogger
BREAKING CHANGE:

Deprecated `TestLogger` has been removed. Use `logging` API from `'@angular-devkit/core'` instead.

**Note:** this change doesn't effect application developers.
2020-09-22 10:29:53 -05:00
Charles Lyding
e5266fdd44 refactor(@angular-devkit/build-angular): temporarily disable Webpack 5 license extraction
The license extraction plugin is currently causing errors when building/serving with Webpack 5.  This change temporarily disables the option when Webpack 5 is used until further investigation can take place and to unblock initial Webpack 5 support.
2020-09-21 11:55:11 -05:00
Charles Lyding
ea2b19cedc refactor(@angular-devkit/build-angular): adjust Webpack configuration based on version 4/5
This change adds helpers to allow the Webpack configuration to be automatically adjusted based on the Webpack version in use.
These helpers are then used to provide configuration compatibility for Webpack 5 which has several differences to the Webpack 4 configuration.
Behavior is maintained between the two versions so that external option behavior is not altered.
2020-09-21 11:55:11 -05:00
Alan Agius
99210b203d fix(@angular-devkit/build-angular): add node-sass deprecation warning 2020-09-18 14:53:31 -05:00
Alan Agius
5996896076 feat(@angular-devkit/build-angular): improve build stats output format
With this change we also remove sourcemaps from build info to align with Webpack 5 output.
2020-09-18 14:52:38 -05:00
Alan Agius
13b17baebe refactor(@angular-devkit/build-angular): add spinners for localize and downlevelling 2020-09-16 10:38:58 -04: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
Charles Lyding
9144cf87ff refactor(@angular-devkit/build-angular): support Webpack 5 errors/warnings
Webpack 5 uses an object to represent errors and warnings unlike Webpack 4 which used a string.  This change provides support for both scenarios.
2020-09-14 15:54:30 -04:00
Alan Agius
14d70d15b9 refactor(@angular-devkit/build-angular): add missing formatOptions which is non optional in v11.0.0-next.1
Related to https://github.com/angular/angular/pull/38787
2020-09-11 14:31:07 -04:00
Alan Agius
622d08447d refactor: use ansi-colors instead of removed terminal utils 2020-09-10 20:19:33 +02:00
Charles Lyding
f31f853de8 refactor(@angular-devkit/build-angular): use Webpack ChunkGraph API in SuppressExtractedTextChunksWebpackPlugin 2020-09-10 19:46:45 +02:00
Alan Agius
9087197e4a fix(@angular-devkit/build-angular): set logging level to verbose when using --verbose 2020-09-10 17:53:02 +02: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
Alan Agius
0a9e1fd3af build: update postcss-loader to version 4.0 2020-09-09 18:31:29 +02:00
Charles Lyding
16fabddbf1 refactor(@angular-devkit/build-angular): support dedupe plugin with Webpack 5
The structure of the data from the `afterResolve` hook has changed in Webpack 5.  This change provides compatibility for both the Webpack 5+ and Webpack 4 variants.
2020-09-09 10:47:13 +02:00
Charles Lyding
22ecb13986 fix(@angular-devkit/build-angular): filter unactionable System.import webpack warning
Webpack 5+ has no facility to disable this warning. `System.import` is used in `@angular/core` for deprecated string-form lazy routes.
2020-09-09 00:05:40 +02:00
Alan Agius
72097ea55c refactor(@angular-devkit/build-angular): lazy require autoprefixer, mini-css-extract-plugin and postcss-import 2020-09-08 19:47:09 +02:00
Keen Yee Liau
8995e49f0b feat(@angular-devkit/build-angular): Switch to karma-coverage
This commit switches coverage tooling from karma-coverage-istanbul-reporter
to karma-coverage since it's better supported.

Closes #17757
2020-09-06 12:22:25 +02:00
Alan Agius
5f064eba74 build: update @types/webpack to 4.41.22 2020-09-03 18:08:09 +02:00
Alan Agius
e95b73f6fb refactor(@angular-devkit/build-angular): set resolve roots to projectRoot
Previously roots was the same as context which was set to projectRoot, however in the previous change we changed the context to workspaceRoot.

With this change we maintain the same resolve root setting.

More info:
4a3e4bda6b/lib/config/defaults.js (L875)

 https://webpack.js.org/configuration/resolve/
2020-09-03 18:08:09 +02:00
Alan Agius
086d74d2b4 fix(@angular-devkit/build-angular): improve debugging experience
With this change we improve the debugging experience with 2 things.

1. Cleaner Karma stack traces in the terminal
Before
```
Chrome 84.0.4147.105 (Mac OS 10.15.5) AppComponent should have as title 'foo' FAILED
        Error: Expected 'foo' to equal 'fox'.
            at <Jasmine>
            at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/projects/foo/src/app/app.component.spec.ts:22:23)
            at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-evergreen.js:364:1)
            at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:292:1)
Chrome 84.0.4147.105 (Mac OS 10.15.5): Executed 3 of 3 (1 FAILED) (0 secs / 0.214 secs)
Chrome 84.0.4147.105 (Mac OS 10.15.5) AppComponent should have as title 'foo' FAILED
        Error: Expected 'foo' to equal 'fox'.
            at <Jasmine>
            at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/projects/foo/src/app/app.component.spec.ts:22:23)
            at ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-evergreen.js:364:1)
            at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zChrome 84.0.4147.105 (Mac OS 10.15.5): Executed 3 of 3 (1 FAILED) (0.225 secs / 0.214 secs)
```

After
```
Chrome 84.0.4147.105 (Mac OS 10.15.5) AppComponent should have as title 'foo' FAILED
        Error: Expected 'foo' to equal 'fox'.
            at <Jasmine>
            at UserContext.<anonymous> (projects/foo/src/app/app.component.spec.ts:22:23)
            at ZoneDelegate.invoke (node_modules/zone.js/dist/zone-evergreen.js:364:1)
            at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/zone-testing.js:292:1)
Chrome 84.0.4147.105 (Mac OS 10.15.5): Executed 2 of 3 (1 FAILED) (0 secs / 0.225 secs)
Chrome 84.0.4147.105 (Mac OS 10.15.5) AppComponent should have as title 'foo' FAILED
        Error: Expected 'foo' to equal 'fox'.
            at <Jasmine>
            at UserContext.<anonymous> (projects/foo/src/app/app.component.spec.ts:22:23)
            at ZoneDelegate.invoke (node_modules/zone.js/dist/zone-evergreen.js:364:1)
Chrome 84.0.4147.105 (Mac OS 10.15.5): Executed 3 of 3 (1 FAILED) (0.281 secs / 0.237 secs)
```

2. Reduce VS Code configuration
Before
```
{
  "name": "ng test",
  "type": "chrome",
  "request": "launch",
  "url": "http://localhost:9876/debug.html",
  "webRoot": "${workspaceFolder}",
  "sourceMaps": true,
  "sourceMapPathOverrides": {
    "webpack:/*": "${webRoot}/*",
    "/./*": "${webRoot}/*",
    "/src/*": "${webRoot}/*",
    "/*": "*",
    "/./~/*": "${webRoot}/node_modules/*"
  }
},
```

After
```
{
  "name": "ng test",
  "type": "chrome",
  "request": "launch",
  "url": "http://localhost:9876/debug.html",
  "webRoot": "${workspaceFolder}",
},
```
2020-09-03 18:08:09 +02:00