Skip to content

Commit a0312c6

Browse files
clydindgp1130
authored andcommitted
refactor(@angular-devkit/build-angular): support ES5 target with ES2015 APF
1 parent 793f6ca commit a0312c6

File tree

8 files changed

+173
-97
lines changed

8 files changed

+173
-97
lines changed

package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,11 @@
8080
"@angular/platform-server": "9.1.4",
8181
"@angular/router": "9.1.4",
8282
"@angular/service-worker": "9.1.4",
83-
"@babel/core": "7.9.0",
84-
"@babel/generator": "7.9.4",
85-
"@babel/preset-env": "7.9.0",
83+
"@babel/core": "7.9.6",
84+
"@babel/generator": "7.9.6",
85+
"@babel/plugin-transform-runtime": "7.9.6",
86+
"@babel/preset-env": "7.9.6",
87+
"@babel/runtime": "7.9.6",
8688
"@babel/template": "7.8.6",
8789
"@bazel/bazel": "2.1.0",
8890
"@bazel/buildifier": "3.0.0",

packages/angular_devkit/build_angular/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ ts_library(
9797
"@npm//@angular/localize",
9898
"@npm//@angular/service-worker",
9999
"@npm//@babel/core",
100+
"@npm//@babel/plugin-transform-runtime",
100101
"@npm//@babel/preset-env",
102+
"@npm//@babel/runtime",
101103
"@npm//@babel/template",
102104
"@npm//@jsdevtools/coverage-istanbul-loader",
103105
"@npm//@types/babel__core",

packages/angular_devkit/build_angular/package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,11 @@
1111
"@angular-devkit/build-optimizer": "0.0.0",
1212
"@angular-devkit/build-webpack": "0.0.0",
1313
"@angular-devkit/core": "0.0.0",
14-
"@babel/core": "7.9.0",
15-
"@babel/generator": "7.9.4",
16-
"@babel/preset-env": "7.9.0",
14+
"@babel/core": "7.9.6",
15+
"@babel/generator": "7.9.6",
16+
"@babel/plugin-transform-runtime": "7.9.6",
17+
"@babel/preset-env": "7.9.6",
18+
"@babel/runtime": "7.9.6",
1719
"@babel/template": "7.8.6",
1820
"@jsdevtools/coverage-istanbul-loader": "3.0.3",
1921
"@ngtools/webpack": "0.0.0",

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/browser.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,7 @@ export function getBrowserConfig(wco: WebpackConfigOptions): webpack.Configurati
6767
return {
6868
devtool: false,
6969
resolve: {
70-
mainFields: [
71-
...(wco.supportES2015 ? ['es2015'] : []),
72-
'browser', 'module', 'main',
73-
],
70+
mainFields: ['es2015', 'browser', 'module', 'main'],
7471
},
7572
output: {
7673
crossOriginLoading,

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/common.ts

Lines changed: 56 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
HashedModuleIdsPlugin,
2424
Plugin,
2525
Rule,
26+
RuleSetLoader,
2627
compilation,
2728
debug,
2829
} from 'webpack';
@@ -330,17 +331,15 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
330331
};
331332
}
332333

333-
let buildOptimizerUseRule;
334+
let buildOptimizerUseRule: RuleSetLoader[] = [];
334335
if (buildOptions.buildOptimizer) {
335336
extraPlugins.push(new BuildOptimizerWebpackPlugin());
336-
buildOptimizerUseRule = {
337-
use: [
338-
{
339-
loader: buildOptimizerLoaderPath,
340-
options: { sourceMap: scriptsSourceMap },
341-
},
342-
],
343-
};
337+
buildOptimizerUseRule = [
338+
{
339+
loader: buildOptimizerLoaderPath,
340+
options: { sourceMap: scriptsSourceMap },
341+
},
342+
];
344343
}
345344

346345
// Allow loaders to be in a node_modules nested inside the devkit/build-angular package.
@@ -519,13 +518,55 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
519518
parser: { system: true },
520519
},
521520
{
522-
test: /\.js$/,
523-
// Factory files are processed by BO in the rules added in typescript.ts.
524-
exclude: /(ngfactory|ngstyle)\.js$/,
525-
...buildOptimizerUseRule,
521+
test: /\.m?js$/,
522+
exclude: [/[\/\\](?:core-js|\@babel|tslib)[\/\\]/, /(ngfactory|ngstyle)\.js$/],
523+
use: [
524+
...(wco.supportES2015
525+
? []
526+
: [
527+
{
528+
loader: require.resolve('babel-loader'),
529+
options: {
530+
babelrc: false,
531+
configFile: false,
532+
compact: false,
533+
cacheCompression: false,
534+
cacheDirectory: findCachePath('babel-webpack'),
535+
cacheIdentifier: JSON.stringify({
536+
buildAngular: require('../../../../package.json').version,
537+
}),
538+
presets: [
539+
[
540+
require.resolve('@babel/preset-env'),
541+
{
542+
bugfixes: true,
543+
modules: false,
544+
// Comparable behavior to tsconfig target of ES5
545+
targets: { ie: 9 },
546+
exclude: ['transform-typeof-symbol'],
547+
},
548+
],
549+
],
550+
plugins: [
551+
[
552+
require('@babel/plugin-transform-runtime').default,
553+
{
554+
useESModules: true,
555+
version: require('@babel/runtime/package.json').version,
556+
absoluteRuntime: path.dirname(
557+
require.resolve('@babel/runtime/package.json'),
558+
),
559+
},
560+
],
561+
],
562+
},
563+
},
564+
]),
565+
...buildOptimizerUseRule,
566+
],
526567
},
527568
{
528-
test: /\.js$/,
569+
test: /\.m?js$/,
529570
exclude: /(ngfactory|ngstyle)\.js$/,
530571
enforce: 'pre',
531572
...sourceMapUseRule,
@@ -535,10 +576,7 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
535576
},
536577
optimization: {
537578
noEmitOnErrors: true,
538-
minimizer: [
539-
new HashedModuleIdsPlugin(),
540-
...extraMinimizers,
541-
],
579+
minimizer: [new HashedModuleIdsPlugin(), ...extraMinimizers],
542580
},
543581
plugins: [
544582
// Always replace the context for the System.import in angular/core to prevent warnings.

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/server.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export function getServerConfig(wco: WebpackConfigOptions): Configuration {
3131

3232
const config: Configuration = {
3333
resolve: {
34-
mainFields: [...(wco.supportES2015 ? ['es2015'] : []), 'main', 'module'],
34+
mainFields: ['es2015', 'main', 'module'],
3535
},
3636
target: 'node',
3737
output: {

packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/test.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,7 @@ export function getTestConfig(
6262
return {
6363
mode: 'development',
6464
resolve: {
65-
mainFields: [
66-
...(wco.supportES2015 ? ['es2015'] : []),
67-
'browser', 'module', 'main',
68-
],
65+
mainFields: ['es2015', 'browser', 'module', 'main'],
6966
},
7067
devtool: buildOptions.sourceMap ? false : 'eval',
7168
entry: {

0 commit comments

Comments
 (0)