Skip to content

Commit 89361a0

Browse files
committed
refactor(@angular/cli): centralize ES2015 support checks
1 parent 6984cc2 commit 89361a0

File tree

4 files changed

+13
-26
lines changed

4 files changed

+13
-26
lines changed

packages/@angular/cli/models/webpack-config.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
// @ignoreDep typescript - used only for type information
2+
import * as ts from 'typescript';
13
import { AngularCompilerPlugin } from '@ngtools/webpack';
24
import { readTsconfig } from '../utilities/read-tsconfig';
5+
import { requireProjectModule } from '../utilities/require-project-module';
36
const webpackMerge = require('webpack-merge');
47
import { CliConfig } from './config';
58
import { BuildOptions } from './build-options';
@@ -20,6 +23,7 @@ export interface WebpackConfigOptions<T extends BuildOptions = BuildOptions> {
2023
buildOptions: T;
2124
appConfig: any;
2225
tsConfig: any;
26+
supportES2015: boolean;
2327
}
2428

2529
export class NgCliWebpackConfig<T extends BuildOptions = BuildOptions> {
@@ -39,7 +43,12 @@ export class NgCliWebpackConfig<T extends BuildOptions = BuildOptions> {
3943
const tsconfigPath = path.resolve(projectRoot, appConfig.root, appConfig.tsconfig);
4044
const tsConfig = readTsconfig(tsconfigPath);
4145

42-
this.wco = { projectRoot, buildOptions, appConfig, tsConfig };
46+
const projectTs = requireProjectModule(projectRoot, 'typescript') as typeof ts;
47+
48+
const supportES2015 = tsConfig.options.target !== projectTs.ScriptTarget.ES3
49+
&& tsConfig.options.target !== projectTs.ScriptTarget.ES5;
50+
51+
this.wco = { projectRoot, buildOptions, appConfig, tsConfig, supportES2015 };
4352
}
4453

4554
public buildConfig() {

packages/@angular/cli/models/webpack-configs/browser.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@ import { packageChunkSort } from '../../utilities/package-chunk-sort';
88
import { BaseHrefWebpackPlugin } from '../../lib/base-href-webpack';
99
import { extraEntryParser, lazyChunksFilter } from './utils';
1010
import { WebpackConfigOptions } from '../webpack-config';
11-
import { requireProjectModule } from '../../utilities/require-project-module';
1211

1312

1413
export function getBrowserConfig(wco: WebpackConfigOptions) {
1514
const { projectRoot, buildOptions, appConfig } = wco;
1615

17-
const projectTs = requireProjectModule(projectRoot, 'typescript');
18-
1916
const appRoot = path.resolve(projectRoot, appConfig.root);
2017

2118
let extraPlugins: any[] = [];
@@ -80,13 +77,10 @@ export function getBrowserConfig(wco: WebpackConfigOptions) {
8077
}));
8178
}
8279

83-
const supportES2015 = wco.tsConfig.options.target !== projectTs.ScriptTarget.ES3
84-
&& wco.tsConfig.options.target !== projectTs.ScriptTarget.ES5;
85-
8680
return {
8781
resolve: {
8882
mainFields: [
89-
...(supportES2015 ? ['es2015'] : []),
83+
...(wco.supportES2015 ? ['es2015'] : []),
9084
'browser', 'module', 'main'
9185
]
9286
},

packages/@angular/cli/models/webpack-configs/production.ts

+1-11
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ import { PurifyPlugin } from '@angular-devkit/build-optimizer';
88
import { StaticAssetPlugin } from '../../plugins/static-asset';
99
import { GlobCopyWebpackPlugin } from '../../plugins/glob-copy-webpack-plugin';
1010
import { WebpackConfigOptions } from '../webpack-config';
11-
import { readTsconfig } from '../../utilities/read-tsconfig';
12-
import { requireProjectModule } from '../../utilities/require-project-module';
1311

1412
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
1513

@@ -24,8 +22,6 @@ const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
2422
export function getProdConfig(wco: WebpackConfigOptions) {
2523
const { projectRoot, buildOptions, appConfig } = wco;
2624

27-
const projectTs = requireProjectModule(projectRoot, 'typescript');
28-
2925
let extraPlugins: any[] = [];
3026
let entryPoints: { [key: string]: string[] } = {};
3127

@@ -123,12 +119,6 @@ export function getProdConfig(wco: WebpackConfigOptions) {
123119
uglifyCompressOptions.passes = 3;
124120
}
125121

126-
// Read the tsconfig to determine if we should apply ES6 uglify.
127-
const tsconfigPath = path.resolve(projectRoot, appConfig.root, appConfig.tsconfig);
128-
const tsConfig = readTsconfig(tsconfigPath);
129-
const supportES2015 = tsConfig.options.target !== projectTs.ScriptTarget.ES3
130-
&& tsConfig.options.target !== projectTs.ScriptTarget.ES5;
131-
132122
return {
133123
entry: entryPoints,
134124
plugins: [
@@ -140,7 +130,7 @@ export function getProdConfig(wco: WebpackConfigOptions) {
140130
new UglifyJSPlugin({
141131
sourceMap: buildOptions.sourcemaps,
142132
uglifyOptions: {
143-
ecma: supportES2015 ? 6 : 5,
133+
ecma: wco.supportES2015 ? 6 : 5,
144134
warnings: buildOptions.verbose,
145135
ie8: false,
146136
mangle: true,

packages/@angular/cli/models/webpack-configs/server.ts

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
import { WebpackConfigOptions } from '../webpack-config';
2-
import { requireProjectModule } from '../../utilities/require-project-module';
32

43
/**
54
* Returns a partial specific to creating a bundle for node
65
* @param wco Options which are include the build options and app config
76
*/
87
export function getServerConfig(wco: WebpackConfigOptions) {
98

10-
const projectTs = requireProjectModule(wco.projectRoot, 'typescript');
11-
12-
const supportES2015 = wco.tsConfig.options.target !== projectTs.ScriptTarget.ES3
13-
&& wco.tsConfig.options.target !== projectTs.ScriptTarget.ES5;
14-
159
const config: any = {
1610
resolve: {
1711
mainFields: [
18-
...(supportES2015 ? ['es2015'] : []),
12+
...(wco.supportES2015 ? ['es2015'] : []),
1913
'main', 'module',
2014
],
2115
},

0 commit comments

Comments
 (0)