Skip to content

Commit a41c185

Browse files
filipesilvaalexeagle
authored andcommitted
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 d133260 commit a41c185

File tree

8 files changed

+21
-21
lines changed

8 files changed

+21
-21
lines changed

packages/angular_devkit/build_angular/package.json

+1-1
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

+3-3
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

+3-3
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,
@@ -72,7 +72,7 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
7272

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

312312
if (wco.tsConfig.options.target !== undefined &&
313-
wco.tsConfig.options.target >= ts.ScriptTarget.ES2017) {
313+
wco.tsConfig.options.target >= ScriptTarget.ES2017) {
314314
wco.logger.warn(tags.stripIndent`
315315
WARNING: Zone.js does not support native async/await in ES2017.
316316
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

+3-3
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

+3-3
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

+4-4
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

+3-3
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
}

tests/legacy-cli/e2e/tests/basic/update-7.0.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { expectToFail } from '../../utils/utils';
88

99

1010
export default async function () {
11-
const extraUpdateArgs = await isPrereleaseCli() ? ['--next', '--force'] : [];
11+
const extraUpdateArgs = await isPrereleaseCli() ? ['--next'] : [];
1212

1313
// Create new project from previous version files.
1414
// We must use the original NPM packages to force a real update.

0 commit comments

Comments
 (0)