359 Commits

Author SHA1 Message Date
Charles Lyding
74ec9110b0 refactor(@angular-devkit/build-angular): remove unused type 2019-04-22 13:37:46 -07:00
Minko Gechev
36be8cd42e feat(@angular-devkit/build-angular): warn when target greater es2015
When using differential loading with targets ES5 and ES2016+, the
browser with ESM support will pick `script[type="module"]` scripts even
without supporting ES2016+ syntax.

We want to warn users in this case.
2019-04-22 11:32:48 -07:00
Alan Agius
96fe7686aa docs: update description for deleteOutputPath in server builder 2019-04-19 10:56:14 -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
Minko Gechev
7a935518dc refactor(@angular-devkit/build-angular): compare the target with
ScriptTarget

Compare with ScriptTarget and consider ES2017 and newer.
2019-04-19 10:48:43 -07:00
Charles Lyding
2ee76e7371 refactor(@angular-devkit/build-angular): cleanup service-worker augmentation 2019-04-18 11:46:55 -07:00
Alan Agius
1af164b39e refactor: rename es5 polyfills entrypoint name to polyfills-es5 2019-04-18 11:46:25 -07:00
Charles Lyding
71ac097aff refactor(@angular-devkit/build-angular): standardize builder exports 2019-04-16 09:40:22 -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
Charles Lyding
2b234546dd refactor(@angular-devkit/build-angular): add transform support to server builder 2019-04-15 11:32:02 -07:00
Charles Lyding
f1f49325f7 refactor(@angular-devkit/build-angular): standardize builder transforms 2019-04-15 11:32:02 -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
Alan Agius
5f13d06cb3 fix(@angular-devkit/build-angular): ignore bundle budgets when running karma or devserver
Fixes #14100
2019-04-12 12:17:35 -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
Filipe Silva
323c8838ff feat(@angular-devkit/build-angular): support web workers in karma builder
Followup to https://github.com/angular/angular-cli/pull/13700, the karma builder did not get the same support but it should.
2019-04-10 08:43:14 -07:00
Charles Lyding
c8e0c35e60 feat(@angular-devkit/build-angular): support karma builder webpack transformation 2019-04-10 08:40:20 -07:00
Charles Lyding
a063e26e86 refactor(@angular-devkit/build-angular): minor cleanup of karma builder 2019-04-10 08:40:20 -07:00
Alan Agius
0baa9c879e feat(@angular-devkit/build-angular): improve handling of nomodules and modules in index generation
Since when having differential loading we already know which files originated from which build. We shouldn't need to merge and transform this data.

With this change, the index generator accepts a couple of new inputs.
1. `files` - used for Js and CSS files which require nomodule nor module attributes
2. `moduleFiles` - Js files that need to have a `module` attribute
3. `noModuleFiles`  - Js files that need to have a `nomodule` attribute
4. `entrypoints` - used to sort the insertion of files in the HTML file
2019-04-10 08:34:33 -07:00
ManfredSteyer
32a096f3f0 feat(@angular-devkit/build-angular): differential loading
This PR adds differential loading to the browser builder. First, it checks if differential loading is needed. This is the case if the compilation target is ES2015 while the browserslist points to ES5 browsers.

For providing differential loading, it calls the methods for creating the webpack config for each compilation target (e. g. ES5 and ES2015). The needed differences between those configurations are defined using parameters also added by this PR. Then it calls webpack for each of them and merges the results

This feature is currently hidden behind a flag. To activate it, set the differentialLoading flag in browser/index.ts.
2019-04-09 09:25:37 -07:00
Sam Thorogood
9aefe8371c feat(@angular-devkit/build-angular): add safari-nomodule snippet 2019-04-04 19:52:33 -07:00
Charles Lyding
246abb3935 feat(@angular-devkit/build-angular): update to core-js 3
Fixes  #13954
2019-04-04 09:28:02 -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
3d9200a3c8 refactor(@angular-devkit/build-angular): use build-webpack stable API module imports 2019-04-02 04:50:08 -07:00
Filipe Silva
ed0e6aab57 feat(@angular-devkit/build-angular): support TS web workers 2019-04-02 04:49:34 -07:00
Filipe Silva
1810394c3a test(@angular-devkit/build-angular): test worker bundling 2019-04-02 04:49:34 -07:00
Jason Miller
c630d5f811 feat(@angular-devkit/build-angular): support module web workers.
Supports new Worker(...,{type:module}) using github.com/googlechromelabs/worker-plugin
2019-04-02 04:49:34 -07:00
ManfredSteyer
a5364a43c2 feat(@angular-devkit/build-angular): write index.html for differential loading
Currently, the IndexHtmlWebpackPlugin generates the index.html file *during* bundling. However, to support differential loading the builder must do this *after* bundling because only then we know the produced files for ES5, ES2015, etc.
Hence, this extracts the IndexHtmlWebpackPlugin logic to a helper function which can still be called by IndexHtmlWebpackPlugin for use cases not affected by differential loading (e. g. ng serve) as well as directly by the builder.
https://docs.google.com/document/d/13k84oGwrEjwPyAiAjUgaaM7YHJrzYXz7Cbt6CwRp9N4/edit?ts=5c652052
2019-04-02 04:46:15 -07:00
Andriy Pyvovarchuk
50cce668cc refactor: replace deprecated package opn with open 2019-04-01 10:53:12 -07:00
Charles Lyding
36d78debdb fix(@angular-devkit/build-angular): ensure correct dev server path with public host option
If a custom path is provided the webpack dev server client drops the sockjs-node segment. This adds it back so that behavior is consistent when using a custom URL path.

Fixes #13627
2019-03-29 16:36:50 -07:00
Filipe Silva
8e3e755995 feat(@angular-devkit/build-angular): add experimentalImportFactories option 2019-03-29 14:39:48 -07:00
Filipe Silva
bc7da5d076 feat(@ngtools/webpack): support import syntax for loadChildren with ViewEngine
This feature ONLY matches the format below:
```
loadChildren: () => import('IMPORT_STRING').then(m => m.EXPORT_NAME)
```

It will not match nor alter variations, for instance:
- not using arrow functions
- not using `m` as the module argument
- using `await` instead of `then`
- using a default export (https://github.com/angular/angular/issues/11402)

The only parts that can change are the ones in caps: IMPORT_STRING and EXPORT_NAME.
2019-03-29 14:39:48 -07:00
Charles Lyding
ba21c855c0 refactor(@angular-devkit/build-angular): cleanup stable architect API builder file names 2019-03-29 14:37:35 -07:00
Charles Lyding
dd058a2cc3 refactor(@angular-devkit/build-angular): remove experimental architect builders 2019-03-29 14:37:35 -07:00
Hans Larsen
00fb4cea4f feat(@angular-devkit/build-angular): use builder name for category
So we can differentiate between dev-server, browser, karma, etc.
2019-03-28 13:28:41 -07:00
Hans Larsen
a2ff62e2b0 feat(@angular-devkit/build-angular): add analytics for build
Add a few metrics that we want to capture in the build.
2019-03-28 13:28:41 -07:00
Charles Lyding
7b1bb478b5 fix(@angular-devkit/build-angular): use package import for build-webpack in server builder 2019-03-27 16:33:39 -07:00
Charles Lyding
a011863477 feat(@angular-devkit/build-angular): implement stable architect API for extract-i18n 2019-03-25 12:39:05 -07:00
Hans Larsen
872799e174 feat(@angular-devkit/build-angular): add AppShell new API builder
This is fully compatible with the new API. The tests have been moved 1:1.
The cleanup in general is noticable.
2019-03-25 10:38:42 -07:00
Hans Larsen
69e4103cef feat(@angular-devkit/build-angular): add server output path 2019-03-25 10:38:42 -07:00
Hans Larsen
818bf32d68 refactor(@angular-devkit/build-angular): use quicktype of app-shell schema 2019-03-25 10:38:42 -07:00
Charles Lyding
2f791395d2 feat(@angular-devkit/build-angular): implement stable architect API for karma 2019-03-22 07:13:51 -07:00
Alan Agius
ce15899020 feat(@angular-devkit/build-angular): use sass instead of node-sass
BREAKING CHANGE: we no longer use `node-sass` by default, instead we use `sass` (dart-sass).

While in most cases this should not have an impact the generated code, dart sass has some differences from Ruby Sass. See https://github.com/sass/dart-sass#behavioral-differences-from-ruby-sass for more details

If you wish to use `node-sass` instead of `sass` you need to install node-sass as a dev dependency.

npm users
```
npm install node-sass --save-dev
```

yarn users
```
yarn add node-sass --dev
```

**Note:** for larger Sass projects to avoid this performance hit you might want to install `fibers`. See: https://www.npmjs.com/package/fibers

Ref: TOOL-748
2019-03-20 15:12:18 -07:00
Hans Larsen
2e9dc3d252 docs: add analytics dimensions for schematics flags and internal doc
The analytics.md should be kept up to date with the flags.
2019-03-20 15:08:07 -07:00
Hans Larsen
5500ad2504 feat(@angular-devkit/build-angular): add Server Builder v2
Using the new Architect API. Including moving the tests.
2019-03-19 10:07:46 -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
Alan Agius
f71896874e feat(@angular-devkit/build-angular): enable webpack profile when using stats-json flag
More information about what `profile` does can be found here: https://webpack.js.org/api/stats

Closes #13907
2019-03-19 09:25:28 -07:00