Skip to content

Commit 908fbe4

Browse files
committed
fix(@angular-devkit/build-angular): relax typescript peerDep
We only use it for a few things but have a strict peerdep. This strictness causes errors when updating the CLI from 7.x to 8.x projects: ``` Package "@angular/compiler-cli" has an incompatible peer dependency to "typescript" (requires ">=3.1.1 <3.2", would install "3.4.5"). ``` `build-angular` did not have a peerdep in 7.x so this never was a problem. This PR relaxes the peerdep to `">=3.1 < 3.5"`, which covers the 3.1 used in initial CLI 7.0 projects.
1 parent 8089a3f commit 908fbe4

File tree

7 files changed

+20
-20
lines changed

7 files changed

+20
-20
lines changed

packages/angular_devkit/build_angular/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,6 @@
8787
"zone.js": "^0.9.0"
8888
},
8989
"peerDependencies": {
90-
"typescript": ">=3.4 < 3.5"
90+
"typescript": ">=3.1 < 3.5"
9191
}
9292
}

packages/angular_devkit/build_angular/src/angular-cli-files/models/build-options.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// TODO: cleanup this file, it's copied as is from Angular CLI.
1010

1111
import { logging } from '@angular-devkit/core';
12-
import * as ts from 'typescript'; // tslint:disable-line:no-implicit-dependencies
12+
import { ParsedCommandLine, ScriptTarget } from 'typescript';
1313
import {
1414
AssetPatternClass,
1515
Budget,
@@ -79,7 +79,7 @@ export interface BuildOptions {
7979
esVersionInFileName?: boolean;
8080

8181
/* When specified it will be used instead of the script target in the tsconfig.json. */
82-
scriptTargetOverride?: ts.ScriptTarget;
82+
scriptTargetOverride?: ScriptTarget;
8383
}
8484

8585
export interface WebpackTestOptions extends BuildOptions {
@@ -93,7 +93,7 @@ export interface WebpackConfigOptions<T = BuildOptions> {
9393
projectRoot: string;
9494
sourceRoot?: string;
9595
buildOptions: T;
96-
tsConfig: ts.ParsedCommandLine;
96+
tsConfig: ParsedCommandLine;
9797
tsConfigPath: string;
9898
supportES2015: boolean;
9999
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import { tags } from '@angular-devkit/core';
99
import * as CopyWebpackPlugin from 'copy-webpack-plugin';
1010
import * as path from 'path';
11-
import * as ts from 'typescript';
11+
import { ScriptTarget } from 'typescript';
1212
import {
1313
Configuration,
1414
ContextReplacementPlugin,
@@ -71,7 +71,7 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
7171

7272
if (targetInFileName) {
7373
// For differential loading we don't need to have 2 polyfill bundles
74-
if (buildOptions.scriptTargetOverride === ts.ScriptTarget.ES2015) {
74+
if (buildOptions.scriptTargetOverride === ScriptTarget.ES2015) {
7575
entryPoints['polyfills'] = [path.join(__dirname, '..', 'safari-nomodule.js')];
7676
} else {
7777
entryPoints['polyfills'] = [es5Polyfills];
@@ -305,7 +305,7 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
305305
}
306306

307307
if (wco.tsConfig.options.target !== undefined &&
308-
wco.tsConfig.options.target >= ts.ScriptTarget.ES2017) {
308+
wco.tsConfig.options.target >= ScriptTarget.ES2017) {
309309
wco.logger.warn(tags.stripIndent`
310310
WARNING: Zone.js does not support native async/await in ES2017.
311311
These blocks are not intercepted by zone.js and will not triggering change detection.

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import * as path from 'path';
1212
import { basename, normalize } from '@angular-devkit/core';
1313
import { ExtraEntryPoint, ExtraEntryPointClass } from '../../../browser/schema';
1414
import { SourceMapDevToolPlugin } from 'webpack';
15-
import * as ts from 'typescript';
15+
import { ScriptTarget } from 'typescript';
1616

1717
export const ngAppResolve = (resolvePath: string): string => {
1818
return path.resolve(process.cwd(), resolvePath);
@@ -95,9 +95,9 @@ export function getSourceMapDevTool(
9595
* Returns an ES version file suffix to differentiate between various builds.
9696
*/
9797
export function getEsVersionForFileName(
98-
scriptTargetOverride: ts.ScriptTarget | undefined,
98+
scriptTargetOverride: ScriptTarget | undefined,
9999
esVersionInFileName = false,
100100
): string {
101101
return scriptTargetOverride && esVersionInFileName ?
102-
'-' + ts.ScriptTarget[scriptTargetOverride].toLowerCase() : '';
102+
'-' + ScriptTarget[scriptTargetOverride].toLowerCase() : '';
103103
}

packages/angular_devkit/build_angular/src/browser/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import * as fs from 'fs';
2727
import * as path from 'path';
2828
import { from, of } from 'rxjs';
2929
import { bufferCount, catchError, concatMap, map, mergeScan, switchMap } from 'rxjs/operators';
30-
import * as ts from 'typescript';
30+
import { ScriptTarget } from 'typescript';
3131
import * as webpack from 'webpack';
3232
import { NgBuildAnalyticsPlugin } from '../../plugins/webpack/analytics';
3333
import { WebpackConfigOptions } from '../angular-cli-files/models/build-options';
@@ -194,8 +194,8 @@ export function buildWebpackBrowser(
194194
const tsConfig = readTsconfig(tsConfigPath);
195195

196196
if (isEs5SupportNeeded(projectRoot) &&
197-
tsConfig.options.target !== ts.ScriptTarget.ES5 &&
198-
tsConfig.options.target !== ts.ScriptTarget.ES2015) {
197+
tsConfig.options.target !== ScriptTarget.ES5 &&
198+
tsConfig.options.target !== ScriptTarget.ES2015) {
199199
context.logger.warn(tags.stripIndent`
200200
WARNING: Using differential loading with targets ES5 and ES2016 or higher may
201201
cause problems. Browsers with support for ES2015 will load the ES2016+ scripts

packages/angular_devkit/build_angular/src/tslint/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import * as glob from 'glob';
1212
import { Minimatch } from 'minimatch';
1313
import * as path from 'path';
1414
import * as tslint from 'tslint'; // tslint:disable-line:no-implicit-dependencies
15-
import * as ts from 'typescript'; // tslint:disable-line:no-implicit-dependencies
15+
import { Program } from 'typescript';
1616
import { stripBom } from '../angular-cli-files/utilities/strip-bom';
1717
import { Schema as RealTslintBuilderOptions } from './schema';
1818

@@ -153,8 +153,8 @@ async function _lint(
153153
systemRoot: string,
154154
tslintConfigPath: string | null,
155155
options: TslintBuilderOptions,
156-
program?: ts.Program,
157-
allPrograms?: ts.Program[],
156+
program?: Program,
157+
allPrograms?: Program[],
158158
): Promise<LintResult> {
159159
const Linter = projectTslint.Linter;
160160
const Configuration = projectTslint.Configuration;
@@ -210,7 +210,7 @@ function getFilesToLint(
210210
root: string,
211211
options: TslintBuilderOptions,
212212
linter: typeof tslint.Linter,
213-
program?: ts.Program,
213+
program?: Program,
214214
): string[] {
215215
const ignore = options.exclude;
216216
const files = options.files || [];

packages/angular_devkit/build_angular/src/utils/differential-loading.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88

99
import * as browserslist from 'browserslist';
1010
import * as caniuse from 'caniuse-api';
11-
import * as ts from 'typescript';
11+
import { ScriptTarget } from 'typescript';
1212

1313

1414
export function isDifferentialLoadingNeeded(
1515
projectRoot: string,
16-
target: ts.ScriptTarget = ts.ScriptTarget.ES5): boolean {
16+
target: ScriptTarget = ScriptTarget.ES5): boolean {
1717

18-
const supportES2015 = target !== ts.ScriptTarget.ES3 && target !== ts.ScriptTarget.ES5;
18+
const supportES2015 = target !== ScriptTarget.ES3 && target !== ScriptTarget.ES5;
1919

2020
return supportES2015 && isEs5SupportNeeded(projectRoot);
2121
}

0 commit comments

Comments
 (0)