Skip to content

Commit dfbb20c

Browse files
author
Angular Builds
committed
44f9141a5 build: update webpack-sources to version 1.4.3
1 parent 9582c49 commit dfbb20c

File tree

13 files changed

+382
-49
lines changed

13 files changed

+382
-49
lines changed

package.json

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
11
{
22
"name": "@angular-devkit/build-angular",
3-
"version": "0.803.0-next.0+15.d7b9650",
3+
"version": "0.803.0-next.0+21.44f9141",
44
"description": "Angular Webpack Build Facade",
55
"experimental": true,
66
"main": "src/index.js",
77
"typings": "src/index.d.ts",
88
"builders": "builders.json",
99
"dependencies": {
10-
"@angular-devkit/architect": "github:angular/angular-devkit-architect-builds#d7b9650b5",
11-
"@angular-devkit/build-optimizer": "github:angular/angular-devkit-build-optimizer-builds#d7b9650b5",
12-
"@angular-devkit/build-webpack": "github:angular/angular-devkit-build-webpack-builds#d7b9650b5",
13-
"@angular-devkit/core": "github:angular/angular-devkit-core-builds#d7b9650b5",
14-
"@ngtools/webpack": "github:angular/ngtools-webpack-builds#d7b9650b5",
10+
"@angular-devkit/architect": "github:angular/angular-devkit-architect-builds#44f9141a5",
11+
"@angular-devkit/build-optimizer": "github:angular/angular-devkit-build-optimizer-builds#44f9141a5",
12+
"@angular-devkit/build-webpack": "github:angular/angular-devkit-build-webpack-builds#44f9141a5",
13+
"@angular-devkit/core": "github:angular/angular-devkit-core-builds#44f9141a5",
14+
"@babel/core": "7.5.5",
15+
"@babel/preset-env": "7.5.5",
16+
"@ngtools/webpack": "github:angular/ngtools-webpack-builds#44f9141a5",
1517
"ajv": "6.10.2",
1618
"autoprefixer": "9.6.1",
1719
"browserslist": "4.6.6",
18-
"caniuse-lite": "1.0.30000988",
20+
"caniuse-lite": "1.0.30000989",
1921
"circular-dependency-plugin": "5.0.2",
2022
"clean-css": "4.2.1",
2123
"copy-webpack-plugin": "5.0.4",
@@ -40,20 +42,23 @@
4042
"sass": "1.22.9",
4143
"sass-loader": "7.1.0",
4244
"semver": "6.3.0",
45+
"source-map": "0.7.3",
4346
"source-map-support": "0.5.13",
4447
"source-map-loader": "0.2.4",
4548
"speed-measure-webpack-plugin": "1.3.1",
4649
"style-loader": "0.23.1",
4750
"stylus": "0.54.5",
4851
"stylus-loader": "3.0.2",
4952
"tree-kill": "1.2.1",
53+
"terser": "4.1.3",
5054
"terser-webpack-plugin": "1.4.1",
5155
"webpack": "4.38.0",
5256
"webpack-dev-middleware": "3.7.0",
5357
"webpack-dev-server": "3.7.2",
5458
"webpack-merge": "4.2.1",
55-
"webpack-sources": "1.4.1",
59+
"webpack-sources": "1.4.3",
5660
"webpack-subresource-integrity": "1.1.0-rc.6",
61+
"worker-farm": "1.7.0",
5762
"worker-plugin": "3.1.0"
5863
},
5964
"peerDependencies": {

src/angular-cli-files/models/es5-polyfills.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
// ES2015 symbol capabilities
1010
import 'core-js/modules/es.symbol';
11+
import 'core-js/modules/es.symbol.description';
1112
import 'core-js/modules/es.symbol.iterator';
13+
import 'core-js/modules/es.symbol.to-string-tag';
1214

1315
// ES2015 function capabilities
1416
import 'core-js/modules/es.function.bind';
@@ -35,11 +37,13 @@ import 'core-js/modules/es.object.set-prototype-of';
3537
import 'core-js/modules/es.object.to-string';
3638

3739
// ES2015 array capabilities
40+
import 'core-js/modules/es.array.concat';
3841
import 'core-js/modules/es.array.is-array';
3942
import 'core-js/modules/es.array.from';
4043
import 'core-js/modules/es.array.of';
4144
import 'core-js/modules/es.array.join';
4245
import 'core-js/modules/es.array.slice';
46+
import 'core-js/modules/es.array.splice';
4347
import 'core-js/modules/es.array.sort';
4448
import 'core-js/modules/es.array.for-each';
4549
import 'core-js/modules/es.array.map';
@@ -79,6 +83,10 @@ import 'core-js/modules/es.string.small';
7983
import 'core-js/modules/es.string.strike';
8084
import 'core-js/modules/es.string.sub';
8185
import 'core-js/modules/es.string.sup';
86+
import 'core-js/modules/es.string.match';
87+
import 'core-js/modules/es.string.replace';
88+
import 'core-js/modules/es.string.search';
89+
import 'core-js/modules/es.string.split';
8290

8391
import 'core-js/modules/es.parse-int';
8492
import 'core-js/modules/es.parse-float';
@@ -91,5 +99,7 @@ import 'core-js/es/regexp';
9199
import 'core-js/modules/es.map';
92100
import 'core-js/modules/es.weak-map';
93101
import 'core-js/modules/es.set';
102+
import 'core-js/modules/web.dom-collections.for-each';
94103
import 'core-js/modules/web.dom-collections.iterator';
95104
import 'core-js/modules/es.promise';
105+
import 'core-js/modules/es.json.to-string-tag';

src/angular-cli-files/models/webpack-configs/common.js

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ const path = require("path");
1414
const typescript_1 = require("typescript");
1515
const webpack_1 = require("webpack");
1616
const webpack_sources_1 = require("webpack-sources");
17-
const build_browser_features_1 = require("../../../utils/build-browser-features");
17+
const utils_1 = require("../../../utils");
1818
const bundle_budget_1 = require("../../plugins/bundle-budget");
1919
const cleancss_webpack_plugin_1 = require("../../plugins/cleancss-webpack-plugin");
2020
const named_chunks_plugin_1 = require("../../plugins/named-chunks-plugin");
2121
const scripts_webpack_plugin_1 = require("../../plugins/scripts-webpack-plugin");
2222
const find_up_1 = require("../../utilities/find-up");
23-
const utils_1 = require("./utils");
23+
const utils_2 = require("./utils");
2424
const ProgressPlugin = require('webpack/lib/ProgressPlugin');
2525
const CircularDependencyPlugin = require('circular-dependency-plugin');
2626
const TerserPlugin = require('terser-webpack-plugin');
@@ -38,12 +38,14 @@ function getCommonConfig(wco) {
3838
// tslint:disable-next-line:no-any
3939
const extraPlugins = [];
4040
const entryPoints = {};
41-
const targetInFileName = utils_1.getEsVersionForFileName(buildOptions.scriptTargetOverride, buildOptions.esVersionInFileName);
41+
const targetInFileName = utils_2.getEsVersionForFileName(utils_1.fullDifferential ? buildOptions.scriptTargetOverride : tsConfig.options.target, buildOptions.esVersionInFileName);
4242
if (buildOptions.main) {
4343
entryPoints['main'] = [path.resolve(root, buildOptions.main)];
4444
}
45+
let differentialLoadingNeeded = false;
4546
if (wco.buildOptions.platform !== 'server') {
46-
const buildBrowserFeatures = new build_browser_features_1.BuildBrowserFeatures(projectRoot, tsConfig.options.target || typescript_1.ScriptTarget.ES5);
47+
const buildBrowserFeatures = new utils_1.BuildBrowserFeatures(projectRoot, tsConfig.options.target || typescript_1.ScriptTarget.ES5);
48+
differentialLoadingNeeded = buildBrowserFeatures.isDifferentialLoadingNeeded();
4749
if ((buildOptions.scriptTargetOverride || tsConfig.options.target) === typescript_1.ScriptTarget.ES5) {
4850
if (buildOptions.es5BrowserSupport ||
4951
(buildOptions.es5BrowserSupport === undefined && buildBrowserFeatures.isEs5SupportNeeded())) {
@@ -59,15 +61,26 @@ function getCommonConfig(wco) {
5961
? [...buildOptions.scripts, noModuleScript]
6062
: [noModuleScript];
6163
}
62-
// For differential loading we don't need to generate a seperate polyfill file
64+
// For full build differential loading we don't need to generate a seperate polyfill file
6365
// because they will be loaded exclusivly based on module and nomodule
64-
const polyfillsChunkName = buildBrowserFeatures.isDifferentialLoadingNeeded()
65-
? 'polyfills'
66-
: 'polyfills-es5';
66+
const polyfillsChunkName = utils_1.fullDifferential && differentialLoadingNeeded ? 'polyfills' : 'polyfills-es5';
6767
entryPoints[polyfillsChunkName] = [path.join(__dirname, '..', 'es5-polyfills.js')];
68+
if (!utils_1.fullDifferential && differentialLoadingNeeded) {
69+
// Add zone.js legacy support to the es5 polyfills
70+
// This is a noop execution-wise if zone-evergreen is not used.
71+
entryPoints[polyfillsChunkName].push('zone.js/dist/zone-legacy');
72+
}
6873
if (!buildOptions.aot) {
74+
// If not performing a full differential build the JIT polyfills need to be added to ES5
75+
if (!utils_1.fullDifferential && differentialLoadingNeeded) {
76+
entryPoints[polyfillsChunkName].push(path.join(__dirname, '..', 'jit-polyfills.js'));
77+
}
6978
entryPoints[polyfillsChunkName].push(path.join(__dirname, '..', 'es5-jit-polyfills.js'));
7079
}
80+
// If not performing a full differential build the polyfills need to be added to ES5 bundle
81+
if (!utils_1.fullDifferential && buildOptions.polyfills) {
82+
entryPoints[polyfillsChunkName].push(path.resolve(root, buildOptions.polyfills));
83+
}
7184
}
7285
}
7386
if (buildOptions.polyfills) {
@@ -89,10 +102,10 @@ function getCommonConfig(wco) {
89102
}));
90103
}
91104
// determine hashing format
92-
const hashFormat = utils_1.getOutputHashFormat(buildOptions.outputHashing || 'none');
105+
const hashFormat = utils_2.getOutputHashFormat(buildOptions.outputHashing || 'none');
93106
// process global scripts
94107
if (buildOptions.scripts.length > 0) {
95-
const globalScriptsByBundleName = utils_1.normalizeExtraEntryPoints(buildOptions.scripts, 'scripts').reduce((prev, curr) => {
108+
const globalScriptsByBundleName = utils_2.normalizeExtraEntryPoints(buildOptions.scripts, 'scripts').reduce((prev, curr) => {
96109
const bundleName = curr.bundleName;
97110
const resolvedPath = path.resolve(root, curr.input);
98111
const existingEntry = prev.find(el => el.bundleName === bundleName);
@@ -240,11 +253,16 @@ function getCommonConfig(wco) {
240253
}
241254
}
242255
const terserOptions = {
243-
ecma: wco.supportES2015 ? 6 : 5,
256+
// Use 5 if using bundle downleveling to ensure script bundles do not use ES2015+ features
257+
// Script bundles are shared for differential loading
258+
// Bundle processing will use the ES2015+ optimizations on the ES2015 bundles
259+
ecma: wco.supportES2015 &&
260+
(!differentialLoadingNeeded || (differentialLoadingNeeded && utils_1.fullDifferential))
261+
? 6
262+
: 5,
244263
warnings: !!buildOptions.verbose,
245264
safari10: true,
246265
output: {
247-
ascii_only: true,
248266
comments: false,
249267
webkit: true,
250268
},
@@ -262,7 +280,9 @@ function getCommonConfig(wco) {
262280
global_defs: angularGlobalDefinitions,
263281
},
264282
// We also want to avoid mangling on server.
265-
...(buildOptions.platform == 'server' ? { mangle: false } : {}),
283+
// Name mangling is handled within the browser builder
284+
mangle: buildOptions.platform !== 'server' &&
285+
(!differentialLoadingNeeded || (differentialLoadingNeeded && utils_1.fullDifferential)),
266286
};
267287
extraMinimizers.push(new TerserPlugin({
268288
sourceMap: scriptsSourceMap,

src/angular-cli-files/models/webpack-configs/typescript.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
1212
const build_optimizer_1 = require("@angular-devkit/build-optimizer");
1313
const path = require("path");
1414
const webpack_1 = require("@ngtools/webpack");
15+
const utils_1 = require("../../../utils");
1516
function _pluginOptionsOverrides(buildOptions, pluginOptions) {
1617
const compilerOptions = {
1718
...(pluginOptions.compilerOptions || {})
@@ -22,7 +23,7 @@ function _pluginOptionsOverrides(buildOptions, pluginOptions) {
2223
hostReplacementPaths[replacement.replace] = replacement.with;
2324
}
2425
}
25-
if (buildOptions.scriptTargetOverride) {
26+
if (utils_1.fullDifferential && buildOptions.scriptTargetOverride) {
2627
compilerOptions.target = buildOptions.scriptTargetOverride;
2728
}
2829
if (buildOptions.preserveSymlinks) {

src/angular-cli-files/utilities/index-file/augment-index-html.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,10 @@ async function augmentIndexHtml(params) {
100100
const isNoModuleType = noModuleFiles.some(scriptPredictor);
101101
const isModuleType = moduleFiles.some(scriptPredictor);
102102
if (isNoModuleType && !isModuleType) {
103-
attrs.push({ name: 'nomodule', value: null }, { name: 'defer', value: null });
103+
attrs.push({ name: 'nomodule', value: null });
104+
if (!script.startsWith('polyfills-nomodule-es5')) {
105+
attrs.push({ name: 'defer', value: null });
106+
}
104107
}
105108
else if (isModuleType && !isNoModuleType) {
106109
attrs.push({ name: 'type', value: 'module' });

0 commit comments

Comments
 (0)