The ES5 polyfills file was erroneously being suffixed with `es2015`. The webpack configuration does not support conditional customization per chunk for the output filenames (`chunkFilename` option schema only supports string values). This change adds an additional small webpack plugin that allows the chunk filenames to be adjusted based on the chunk name. The plugin is only added when differential loading is enabled as this is the only time that a chunk currently requires its filename to be adjusted.
Closes#15915
With this change we retain the order of types are declared in the schema.
Ex:
```json
"oneOf": [
{
"type": "boolean"
},
{
"type": "string",
"description": "The name of the migration to run."
}
]
```
Currently this will result in:
```js
{ type: "string", types: ["string", "boolean"] }
```
This is because we use the order of types from the `allTypes` contant variable.a3a657f7e7/packages/angular_devkit/core/src/json/schema/utility.ts (L12)
Now this will result in:
```js
{ type: "boolean", types: ["boolean", "string"] };
```
The CLI parser will iterate over each type and will set a value of true if `--migrate-only` option is provided.
Related test in the CLL parser
1d105eb569/packages/angular/cli/models/parser_spec.ts (L34)1d105eb569/packages/angular/cli/models/parser_spec.ts (L132-L138)
The node modules directory contains a massive set of directories and files. When watching via polling, that set needs to be queried repeatedly to determine if any files have changed. Changes within node modules are quite rare while using `ng serve` or `ng build --watch`. As a result, polling the node modules directory is rarely useful. This change causes CPU usage to drop from a potential high of ~80% to a more manageable ~5-10%.
TSLint [6.0.0-beta0](https://github.com/palantir/tslint/releases/tag/6.0.0-beta0) was released, and `ng lint` throws with:
TSLint must be version 5.5 or higher.
if we try to use it in a CLI project.
It looks like the current version check allows v5.5+ by checking that both the major and minor versions are > 5. So this fails with 6.0 (but would succeed with 6.5).
This fixes the check to allow using v6.0.
child_process.spawn() with `shell: true` does not quote its arguments, so any data passed in must be surrounded by quotes to properly include spaces. This was making tests fail when the repository is checked out to a directory with a space in it.
Easiest solution is to simply not use shell escaping which avoids the whole problem.