258 Commits

Author SHA1 Message Date
Charles Lyding
bc831e8ff5 feat(@angular-devkit/build-angular): support parallel i18n localization 2019-10-21 13:03:32 -07:00
Charles Lyding
2b41cd1e81 feat(@angular-devkit/build-angular): initial support for i18n translation inlining 2019-10-17 10:45:01 -07:00
Alan Agius
38947d8643 refactor(@angular-devkit/build-angular): remove differential loading version 1.0 2019-10-15 11:22:34 -07:00
Alan Agius
b3086ffd54 fix(@angular-devkit/build-angular): only copy assets outside of webpack when differential loading is needed in build builder
Fixes #15825
2019-10-14 13:42:29 -07:00
Alan Agius
d9bf2dbbda fix(@angular-devkit/build-angular): avoid attempting to copy directories
Avoid copying directly directories, also which this change we cache `fs.existsSync` to optimize copying when a lot of file are being copied to the same destination.

Closes: #15816
2019-10-11 13:53:48 -07:00
Filipe Silva
47490527ff feat(@angular-devkit/build-angular): add experimentalRollupPass (#15690)
In applications that make heavy use of lazy routes and ES2015 libraries, this option can improve bundle sizes. It might also break your bundles in ways we don't understand fully, so please test and report any problems you find.

NOTE: the following are known problems with experimentalRollupPass
- vendorChunk, commonChunk, namedChunks: these won't work, because by the time webpack sees the chunks, the context of where they came from is lost.
- webWorkerTsConfig: workers must be imported via a root relative path (e.g.`app/search/search.worker`) instead of a relative path (`/search.worker`) because of the same reason as above.
- loadChildren string syntax: doesn't work because rollup cannot follow the imports.
2019-10-10 12:39:38 -07:00
Charles
3a44611483 refactor(@angular-devkit/build-angular): initial copy-on-write asset processing support (#15788)
This is currently only supported when performing a differential loading build (no watch mode).  This will eventually be expanded to cover watch mode and non-differential loading builds.
2019-10-09 11:07:31 -07:00
Charles Lyding
72d1bf3c52 refactor(@angular-devkit/build-angular): support reading i18n project options 2019-10-03 14:40:31 -07:00
Charles Lyding
1cefbc6974 refactor(@angular-devkit/build-angular): process bundle code quality improvements 2019-10-03 14:40:31 -07:00
Charles Lyding
941c6af1ed fix(@angular-devkit/build-angular): downlevel with non-loose ECMA compliance
This ensures that the ES5 bundles operate consistently with the ES2015+ bundles.

Fixes #15673
2019-09-30 10:09:54 -07:00
Charles Lyding
dd2a6947ff refactor(@angular-devkit/build-angular): improve performance of parallel bundle processing 2019-09-27 14:41:08 -07:00
Charles Lyding
d3e4dfa0c0 fix(@angular-devkit/build-angular): display accurate sizes for downlevelled files
Fixes #15425
2019-09-26 10:00:35 -07:00
Charles Lyding
8dd67cd3cb fix(@angular-devkit/build-angular): inject correct SRI values in downlevel bundles
Fixes #15468
2019-09-26 10:00:35 -07:00
Charles Lyding
ffd153a6a2 refactor(@angular-devkit/build-angular): use project metadata in builders
This eliminates the need to manually read a workspace file and removes the use of the experimental workspace API from the package.
2019-09-24 13:18:33 -07:00
Alan Agius
ab5b1909d6 build: update rxjs to 6.5.3 2019-09-24 13:18:09 -07:00
Charles Lyding
a6b496d4ff fix(@angular-devkit/build-angular): use manual sourcemap processing for large sourcemaps
Mitigates #15493
2019-09-19 14:41:45 -07:00
Alan Agius
77c4d4aa7b fix(@angular-devkit/build-angular): disable top level variable and function name mangling
Disables toplevel mangling and enables compression for es5 bundles. With compress enabled we reduce a further ~7Kb

Closes: #15436
2019-08-30 00:14:32 +05:30
Charles Lyding
fc53087bd2 refactor(@angular-devkit/build-angular): add debug no mangle environment variable 2019-08-30 00:10:48 +05:30
Charles
0f18e35373 fix(@angular-devkit/build-angular): add sourcemap comment for ES2015 differential loading (#15461)
Fixes #15460
2019-08-28 00:11:55 -07:00
Charles
af9a8b75ee fix(@angular-devkit/build-angular): default poll value when not present (#15417)
`--poll` is a valid command line option (vs. `--poll 1000`).  This however will result in a value of 0 which causes polling to be disabled rather than enabled.  This change sets a default value of 500 when the commandline flag is used.
2019-08-23 11:37:48 -07:00
Charles Lyding
d1488e66a4 refactor(@angular-devkit/build-angular): cache downlevel bundles 2019-08-20 11:07:55 -07:00
Charles Lyding
1c6f665c4f feat(@angular-devkit/build-angular): implement bundle level downleveling to support differential loading 2019-08-08 08:26:15 -07:00
Charles Lyding
8e97df3888 feat(@angular-devkit/build-angular): allow control of index output path
This allows the output path of an application's index HTML file to be controlled independently of the input file.  The output path for the file will be considered relative to the application's configured output path.  This allows an application to contain multiple input index files for different configurations and allow the output file to remain constant.  This also enables the placement of the index file in a subdirectory within the output path or change the name of the output index file neither of which was previously possible.
2019-07-10 04:34:20 +08:00
Alan Agius
8754ecbf99 fix(@angular-devkit/build-angular): IE11 errors when using scripts and differential loading
Invert the builds so that es2015 scripts output don't override the es5 version.

Fixes #14777
2019-07-02 10:58:36 -07:00
Alan
10200f1395 fix(@angular-devkit/build-angular): remove certain redundant build steps from second build in differential loading
With this change we remove styles compilation and copying of assets for the second build when differential loading is enabled.

This should improve the build times for larger applications.
2019-06-19 17:08:25 -07:00
Charles Lyding
0ed8de1e8a refactor(@angular-devkit/build-angular): cleanup compatible Angular version check 2019-06-19 17:06:28 -07:00
Alan Agius
69e47c2249 fix(@angular-devkit/build-angular): browsers that partially support ES6 modules are being marked as not supported
`caniuse-api` only returns `true` for a feature when it's fully supported. This might causes redundant ES5 builds if users opt to support only browsers which do support ES6 modules but either require polyfills such as Safari 10.1 or when both bundles will be downloaded such as `Edge 18`

See: 1b74c10257/src/index.js (L49) and https://github.com/Nyalab/caniuse-api/issues/82

Fixes #14580
2019-06-11 09:55:03 -07:00
Alan Agius
1dd399c4d2 fix(@angular-devkit/build-angular): nomodule polyfill for Safari
10.1 and iOS Safari 10.3

The nomodule polyfill needs to be loaded prior to any script and be
outside of webpack compilation because otherwise webpack will cause the
script to be wrapped in `window["webpackJsonp"]` which causes it to
fail.

This polyfill will only be injected when the either Safari 10.1 or iOS
Safari 10.3 support is required, which is based on the browsers  defined in browserslist file.

Fixes #14680
2019-06-11 09:55:03 -07:00
Alan
e333450dc0 feat(@angular-devkit/build-angular): add a post transformation hook to index generation
Fixes #14392
2019-05-14 10:51:56 -07:00
Charles Lyding
4f9ac220d8 refactor(@angular-devkit/build-angular): remove unused utility functions 2019-05-13 15:56:16 -07:00
Filipe Silva
a41c185713 fix(@angular-devkit/build-angular): relax typescript peerDep
We only use it for a few things but have a strict peerdep.

This strictness causes errors when updating the CLI from 7.x to 8.x projects:
```
Package "@angular/compiler-cli" has an incompatible peer dependency to "typescript" (requires ">=3.1.1 <3.2", would install "3.4.5").
```
`build-angular` did not have a peerdep in 7.x so this never was a problem.

This PR relaxes the peerdep to `">=3.1 < 3.5"`, which covers the 3.1 used in initial CLI 7.0 projects.
2019-05-07 16:16:46 -06:00
Charles Lyding
5b4b78bfbb feat(@angular-devkit/build-angular): use evergreen version of zone.js with ES2015 2019-04-25 12:12:29 -07:00
Charles Lyding
e3a36c4d9f fix(@angular-devkit/build-angular): skip version check if unit-testing 2019-04-25 10:23:25 -07:00
Charles Lyding
b7a26fa08b fix(@angular-devkit/build-angular): add Angular version check into required builders 2019-04-25 10:23:25 -07:00
ManfredSteyer
201856a5ec fix(@angular-devkit/build-angular): run build steps for differential loading in sequence to avoid confusing progress information
Before, the build tasks ran in parallel and so the different webpack
instances competed over the same lines on the console.

To fail fast and to prevent to show the same errors twice, the second
build step is not executed if the first one fails.

As running these tasks in sequence causes issues with watch mode, this
PR also disables differential loading when watch mode is requested.
2019-04-19 10:54:51 -07:00
Alan Agius
5fc1f2499c feat(@angular-devkit/build-angular): deprecate es5BrowserSupport option in browser builder
In future, this will be determined from the list of supported browsers specified in the 'browserslist' file.
2019-04-16 08:44:19 -07:00
Alan Agius
c319cd054e test: update tests large to cater for the bundle changes with differential loading 2019-04-15 11:03:09 -07:00
Alan Agius
a29bf4ec36 feat(@angular-devkit/build-angular): enable differential loading for es2015 builds
With this change we turn on differential loading for projects that has es2015 as script target and still want to support browsers which that don't support ES2015.

Supported browsers are defined in the browserlist file.
2019-04-15 11:03:09 -07:00
Alan Agius
efccea6e1a feat(@angular-devkit/build-angular): wire up index generation for differential loading
This change wires up the index generation for multiple bundles, we however don't  enable differential loading for users just yet. As this will be done in a separate PR to change over specs to conform with the new files
2019-04-13 10:52:45 -07:00
Charles Lyding
bd16cbc98d refactor(@angular-devkit/build-angular): use webpack config utilities in browser builder 2019-04-12 12:17:21 -07:00
Charles Lyding
76492141d2 refactor(@angular-devkit/build-angular): cleanup architect imports 2019-04-03 16:28:16 +02:00
Charles Lyding
01b53a92e6 fix(@angular-devkit/build-angular): update utility function output type 2019-04-02 10:31:24 -07:00
Charles Lyding
2f791395d2 feat(@angular-devkit/build-angular): implement stable architect API for karma 2019-03-22 07:13:51 -07:00
Hans Larsen
53f6b5ccfe refactor: extract the deleteOutputPath logic from the builder 2019-03-19 10:07:46 -07:00
Hans Larsen
230f491343 refactor: use quicktype for the server schema generation 2019-03-19 10:07:46 -07:00
Hans Larsen
78f5c287d8 refactor(@angular-devkit/build-angular): clean up some interfaces and schemas
Remove the manually maintained schema.d.ts from the browser builder, and use
the Schema JSON file to generate it. This had a lot of repercussions around
the whole build-angular code base and the different interfaces that were
manually kept.
2019-02-21 16:20:54 -08:00
Alan
d10f125cc1 fix(@angular-devkit/build-angular): vendorSourceMap not being recognized when passed directly
Fixes #13414
2019-01-14 11:08:20 -08:00
Matthias Gaudin
59d9735193 fix(@angular-devkit/build-angular): add missing declaration types in build_angular schemas.
Fixes issue #13388
2019-01-14 11:06:00 -08:00
Alan Agius
eaad125da9 refactor: normalizeFileReplacements and normalizeAssetPatterns no longer use rxjs 2018-12-06 11:44:27 -08:00
Alan Agius
af67b49342 refactor: clean up how to generate normalized build options and improve type safety 2018-12-06 11:44:27 -08:00