790 Commits

Author SHA1 Message Date
Alan Agius
f309516bcd refactor(@angular-devkit/build-angular): drop support for zone.js 0.10
BREAKING CHANGE:

Minimum supported `zone.js` version is `0.11.4`
2021-02-17 12:44:43 -06:00
Renovate Bot
e2d6df29e7 build: update webpack-dev-middleware to version 4.1.0 2021-02-15 14:46:21 -06:00
Alan Agius
1bbdbaf822 build: change angular packages local version to 0.0.0
The integration tests run in the framework repo use `0.0.0` as version and not a previously stated `0.0.0-PLACEHOLDER`
2021-02-12 08:34:00 -06:00
Charles Lyding
40dc44b64b refactor(@angular-devkit/build-angular): remove usage of Webpack Stats.ToJsonOutput type
The `Stats.ToJsonOutput` type is not present in the Webpack 5 typings. There was also a large amount of forced typing in the code to successfully compile.
Minimal Webpack JSON stat types are now used that represent the fields used by the tooling.
2021-02-11 12:33:47 -05:00
Charles Lyding
e871f87fa2 refactor(@angular-devkit/build-angular): remove use of Webpack RuleSetLoader type
The `RuleSetLoader` type is not exported from the Webpack 5 types.
2021-02-10 14:08:07 -05:00
Alan Agius
9337617723 feat(@angular-devkit/build-angular): add postcss-preset-env with stage 3 features
With this change we add `postcss-preset-env` with stage 3 features. This stage includes support for:

 - all property
 - break properties
 - custom properties
 - font-variant property
 - gap properties
 - media query ranges

See https://preset-env.cssdb.org/features#stage-3
2021-02-09 10:30:42 -05:00
Alan Agius
fb2d7ee903 refactor(@angular-devkit/build-angular): remove experimental rollup pass
The experimental rollup pass has significant issues with the new Ivy webpack plugin. It also, didn't produce as well as we hoped in real world scenarios infact in many cases this caused build to fail.

REAKING CHANGE:

The experimental rollup pass `--experimental-rollup-pass` option has been removed.

Closes #15836
2021-02-09 08:50:00 -05:00
Alan Agius
088891b16e refactor(@angular-devkit/build-angular): refactor NodeJsAsyncHost to use FS promises 2021-02-08 14:07:24 -05:00
Alan Agius
aedfcc1862 build: update to @types/node version 12 2021-02-08 14:07:24 -05:00
Charles Lyding
fe90b766df fix(@angular-devkit/build-angular): ensure i18n extraction sourcemaps are fully configured
Some Webpack loaders use loader context flags to control sourcemap generation. This fix ensures that Webpack will set the appropriate flags for loaders to leverage.
2021-02-08 13:01:00 -05:00
Bruno Baia
d64dc76d7e docs: update ESLint migration link 2021-02-08 09:34:25 -05:00
Amadou Sall
1b5971a0bc fix(@angular-devkit/build-angular): the root Tailwind configuration file is always picked
A configuration file in the project root should take precedence over one in the workspace root, but it's not currently the case.
2021-02-08 09:33:59 -05:00
S. Iftekhar Hossain
a7ffce10ee fix(@angular-devkit/build-angular): fixed ignoring of karma plugins config
Previously `karma-coverage` was validated only when in karma plugins config one of these was added
``'karma-coverage'` or `require('karma-coverage')`

This change will allow cli to validate `karma-coverage` plugin if in `karma.conf.js` `'karma-*'` is used. Example:
```
plugins: [
      ...
      'karma-*',
      require('@angular-devkit/build-angular/plugins/karma'),
      ...
    ]
```

Fixes #19993
2021-02-08 09:30:00 -05:00
Charles Lyding
ab5078d660 fix(@angular-devkit/build-angular): increase resilience of babel cache identifier
This provides a default cache identifer to the babel loader that includes all internal options from the customized babel loader.
2021-02-04 19:44:07 +01:00
Alan Agius
9030c9ee16 fix(@angular-devkit/build-angular): remove 0.0.0 version from supported Angular semver versions error message 2021-02-04 18:58:42 +01:00
Charles Lyding
c51126fc19 test(@angular-devkit/build-angular): add async downlevel source map unit test 2021-02-04 18:26:56 +01:00
Charles Lyding
a986d8ab63 test(@angular-devkit/build-angular): ensure jobs are complete before checking logs 2021-02-04 08:43:15 +01:00
Alan Agius
6732294ff3 refactor(@angular-devkit/build-angular): remove file-loader dependency
`file-loader` resolves `import/require()` on a file into a url. This is non standard, undocumented, unsupported Webpack specific functionality. This was introduced in the Angular CLI  before `postcss-cli-resources` existed and was never removed.

Using `file-loader` and `postcss-cli-resources` are no longer needed with Webpack 5, because of the introduction of [Assets Modules](https://webpack.js.org/guides/asset-modules/).

BREAKING CHANGE:

The unsupported/undocumented, Webpack specific functionality to `import`/`require()` a non-module file has been removed.

Before
```js
import img from './images/asset.png';
```

After
```html
<img src="images/asset.png">
```
2021-02-04 08:42:57 +01:00
Alan Agius
d2ce3e7d62 fix(@ngtools/webpack): don't use skipTemplateCodegen to determine if compilation is JIT mode
With this change we add a new `jitMode` option to the ivy AngularWebpackPlugin.
`readConfiguration` from `@angular/compiler-cli` will use file configuration options over programmaticly supplied options. By using a separate option the options precedence issue can be avoided.

Closes #19949
2021-02-03 20:44:07 +01:00
Alan Agius
04ff164e08 test(@angular-devkit/build-angular): cleanup budgets E2E test 2021-02-03 18:14:26 +01:00
Alan Agius
238438e26f refactor(@angular-devkit/build-angular): remove BundleBudgetPlugin
Remove BundleBudgetPlugin, and instead use the `checkBudgets` method directly in the browser buillder.
2021-02-03 18:14:26 +01:00
Charles Lyding
73b409881f feat(@angular-devkit/build-angular): detect and use tailwindcss in projects
This feature adds detection of the `tailwindcss` package (https://tailwindcss.com) and provides a mechanism to automatically include support. To enable tailwindcss for a project, two actions must be taken:
1) Install `tailwindcss` into the Angular workspace (`npm install -D tailwindcss`/`yarn add -D tailwindcss`)
2) Create a tailwindcss configuration file (`tailwind.config.js`) in either the workspace root or the project root.  A configuration file in the project root takes precedence over one in the workspace root.

When both conditions are met, the Angular CLI will initialize and integrate tailwindcss into the stylesheet build pipeline.
2021-02-03 09:57:06 +01:00
Alan Agius
21a05d2ea0 fix(@angular-devkit/build-angular): error with status code when response code is not 200
During font inlining, a request can return a response status code other than 200. In which case, the contents of the page should not be inlined.
2021-02-02 16:54:53 +01:00
Alan Agius
e1efc35e41 fix(@ngtools/webpack): recover from component stylesheet errors
Webpack doesn't handle well expections and promise rejections. With this change we use the compilation errors.

Closes #19892
2021-02-02 16:54:34 +01:00
Alan Agius
2cf374a0fc refactor(@angular-devkit/build-angular): remove unused findUp method 2021-02-02 15:21:39 +01: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
e02d737cb8 fix(@angular-devkit/build-angular): handle promise rejection in IndexHtmlWebpackPlugin
Webpack doesn't handle promise rejections properly. With this change use use a try/catch block and add the error to the compilation.

Closes #19893
2021-01-28 20:32:39 +01:00
Alan Agius
60b2cb7f10 fix(@angular-devkit/build-angular): add fallback for non defined stats options
A fallback value for stats options when an option is not defined. It has precedence over local webpack defaults.
2021-01-28 20:32:17 +01:00
Matt Lewis
42e439f6fd fix(@angular-devkit/build-angular): fix budgets for any script with differential loading enabled
Fixes #19849
2021-01-28 11:02:07 +01:00
Alan Agius
54f44bc49a test(@angular-devkit/build-angular): move output-hashing test to new test harness 2021-01-28 09:35:31 +01:00
Alan Agius
a86ea3f154 fix(@angular-devkit/build-angular): allow emitting multiple files with the same filename
Previously when hashing of media was disabled, if 2 files had the same name. Only one files used to be emitted. With this change we change the behaviour so that both files are emitted.

Closes #12186
2021-01-28 09:35:31 +01:00
Alan Agius
36a28e5226 fix(@angular-devkit/build-angular): styles that are not injected do count for initial bundle size
Closes #17672
2021-01-28 09:35:12 +01:00
Charles Lyding
e2e8d57b38 feat(@angular-devkit/build-angular): support targeting ES2017 with Zone.js
This change causes native async functions to be downleveled when an application targets ES2017 within its TypeScript configuration.  Any source file that contains the async keyword will be processed including libraries.  Since Zone.js does not support native async, this processing allows Zone.js to function with an ES2017 target.
2021-01-26 09:26:23 -06:00
Alan Agius
9af0942e69 fix(@angular-devkit/build-angular): inlining fonts behind proxy
With this change users can now their proxy server via the `HTTPS_PROXY` environment variable. The specified proxy will be used when making requests to inline fonts.

Closes #19401
2021-01-25 09:17:03 -06:00
Alan Agius
d0cc0cbda3 fix(@angular-devkit/build-angular): correctly handle scripts when using subresource-integrity option
Fixes #19829
2021-01-25 09:16:32 -06:00
Alan Agius
3db8c6e464 test(@angular-devkit/build-angular): change sri tests to use new test harness 2021-01-25 09:16:32 -06:00
Alan Agius
cc51432661 fix(@angular-devkit/build-angular): resolve less from build-angular package 2021-01-22 10:36:20 -08:00
Alan Agius
5711e691b9 fix(@angular-devkit/build-angular): resolve postcss from build-angular package
`postcss-loader` version 4.2.0 added an `implementation` option. Using the using will ensure that the correct postcss version is used.

More info: deac9787ee

Fixes #19839
2021-01-22 10:36:20 -08: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
Charles Lyding
7b106dd963 refactor(@angular-devkit/build-angular): remove unneeded no-implicit-dependencies tslint comments 2021-01-19 15:06:29 -05:00
cexbrayat
748c1f8445 fix(@angular-devkit/build-angular): resolve i18n outFile with normalized format
IF someone uses the `extract-i18n` with the deprecated `--i18n-format` option,
then `options.format` is undefined and the `outFile` defaults to `messages.xlf`,
whereas the content will be using the proper format.
2021-01-15 13:32:13 -05:00
Alan Agius
e368b2f141 refactor(@angular-devkit/build-angular): move karma plugin in own folder 2021-01-15 13:31:48 -05:00
Charles Lyding
2ce5445ed3 feat(@angular-devkit/build-angular): support karma version 6.x
This change adds support for using karma 6.x within a project.
2021-01-13 23:12:55 +01:00
Alan Agius
37d8e25af8 fix(@angular-devkit/build-angular): generate consistent filenames
With this change we generate consistent file names when using the browser builder in watch mode with differential loading.

Closes #15157
2021-01-12 17:06:17 +01:00
Charles Lyding
a78eaad91a test(@angular-devkit/build-angular): add browser builder scripts longhand option tests
This change adds expanded unit tests for the browser builder's `scripts` longhand option using the builder test harness.
2021-01-12 09:34:49 +01:00
Charles Lyding
76b023e55e feat(@angular-devkit/build-angular): update IE11 Object/Array polyfills
This change adds the following polyfills for IE11 (`nomodule` browsers):
ES2016:
Array.prototype.includes
ES2017:
Object.entries
Object.values
Object.getOwnPropertyDescriptors
ES2019:
Object.fromEntries
Array.prototype.flat
Array.prototype.flatMap
2021-01-12 09:30:23 +01:00
Alan Agius
a266f55b6c test(@angular-devkit/build-angular): change extractLicenses unit test to use build harness
This change adds a unit tests for the browser builder's extractLicenses option using the builder test harness.
2021-01-11 19:57:01 +01:00