diff --git a/packages/angular/cli/models/architect-command.ts b/packages/angular/cli/models/architect-command.ts index 5871bd0ccb69..ee1df7dc085e 100644 --- a/packages/angular/cli/models/architect-command.ts +++ b/packages/angular/cli/models/architect-command.ts @@ -9,7 +9,6 @@ import { Architect, Target } from '@angular-devkit/architect'; import { WorkspaceNodeModulesArchitectHost } from '@angular-devkit/architect/node'; import { experimental, json, schema, tags } from '@angular-devkit/core'; import { NodeJsSyncHost } from '@angular-devkit/core/node'; -import { Version } from '../upgrade/version'; import { BepJsonWriter } from '../utilities/bep'; import { parseJsonSchemaToOptions } from '../utilities/json-schema'; import { isPackageNameSafeForAnalytics } from './analytics'; @@ -275,9 +274,6 @@ export abstract class ArchitectCommand< protected async runArchitectTarget( options: ArchitectCommandOptions & Arguments, ): Promise { - // Check Angular version. - Version.assertCompatibleAngularVersion(this.workspace.root); - const extra = options['--'] || []; try { diff --git a/packages/angular/cli/upgrade/version.ts b/packages/angular/cli/upgrade/version.ts deleted file mode 100644 index 774678663b99..000000000000 --- a/packages/angular/cli/upgrade/version.ts +++ /dev/null @@ -1,135 +0,0 @@ -/** - * @license - * Copyright Google Inc. All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -import { tags, terminal } from '@angular-devkit/core'; -import * as path from 'path'; -import { SemVer, satisfies } from 'semver'; - - -export class Version { - private _semver: SemVer | null = null; - constructor(private _version: string | null = null) { - this._semver = _version ? new SemVer(_version) : null; - } - - isAlpha() { return this.qualifier == 'alpha'; } - isBeta() { return this.qualifier == 'beta'; } - isReleaseCandidate() { return this.qualifier == 'rc'; } - isKnown() { return this._version !== null; } - - isLocal() { return this.isKnown() && this._version && path.isAbsolute(this._version); } - isGreaterThanOrEqualTo(other: SemVer) { - return this._semver !== null && this._semver.compare(other) >= 0; - } - satisfies(other: string) { - // This comparison includes pre-releases (like betas and rcs), and considers them to be - // before the release proper. - // e.g. '9.0.0-beta.1' will satisfy '>=7.0.0 <9.0.0', but '9.0.0' will not. - return this._semver !== null && satisfies(this._semver, other, { includePrerelease: true }); - } - - get major() { return this._semver ? this._semver.major : 0; } - get minor() { return this._semver ? this._semver.minor : 0; } - get patch() { return this._semver ? this._semver.patch : 0; } - get qualifier() { return this._semver ? this._semver.prerelease[0] : ''; } - get extra() { return this._semver ? this._semver.prerelease[1] : ''; } - - toString() { return this._version; } - - static assertCompatibleAngularVersion(projectRoot: string) { - let angularCliPkgJson; - let angularPkgJson; - let rxjsPkgJson; - const resolveOptions = { paths: [projectRoot] }; - - try { - const angularPackagePath = require.resolve('@angular/core/package.json', resolveOptions); - const rxjsPackagePath = require.resolve('rxjs/package.json', resolveOptions); - - angularPkgJson = require(angularPackagePath); - rxjsPkgJson = require(rxjsPackagePath); - } catch { - console.error(terminal.bold(terminal.red(tags.stripIndents` - You seem to not be depending on "@angular/core" and/or "rxjs". This is an error. - `))); - process.exit(2); - } - - if (!(angularPkgJson && angularPkgJson['version'] && rxjsPkgJson && rxjsPkgJson['version'])) { - console.error(terminal.bold(terminal.red(tags.stripIndents` - Cannot determine versions of "@angular/core" and/or "rxjs". - This likely means your local installation is broken. Please reinstall your packages. - `))); - process.exit(2); - } - - try { - const angularCliPkgPath = require.resolve('@angular/cli/package.json', resolveOptions); - angularCliPkgJson = require(angularCliPkgPath); - if (!(angularCliPkgJson && angularCliPkgJson['version'])) { - throw new Error(); - } - } catch (error) { - console.error(terminal.bold(terminal.red(tags.stripIndents` - Cannot determine versions of "@angular/cli". - This likely means your local installation is broken. Please reinstall your packages. - `))); - process.exit(2); - } - - const cliMajor = new Version(angularCliPkgJson['version']).major; - // e.g. CLI 8.0 supports '>=8.0.0 <9.0.0', including pre-releases (betas, rcs, snapshots) - // of both 8 and 9. - const supportedAngularSemver = `^${cliMajor}.0.0-beta || ` + - `>=${cliMajor}.0.0 <${cliMajor + 1}.0.0`; - - const angularVersion = new Version(angularPkgJson['version']); - const rxjsVersion = new Version(rxjsPkgJson['version']); - - if (angularVersion.isLocal()) { - console.error(terminal.yellow('Using a local version of angular. Proceeding with care...')); - - return; - } - - if (!angularVersion.satisfies(supportedAngularSemver)) { - console.error(terminal.bold(terminal.red(tags.stripIndents` - This version of CLI is only compatible with Angular versions ${supportedAngularSemver}, - but Angular version ${angularVersion} was found instead. - - Please visit the link below to find instructions on how to update Angular. - https://angular-update-guide.firebaseapp.com/ - ` + '\n'))); - process.exit(3); - } else if ( - angularVersion.isGreaterThanOrEqualTo(new SemVer('6.0.0-rc.0')) - && !rxjsVersion.isGreaterThanOrEqualTo(new SemVer('5.6.0-forward-compat.0')) - && !rxjsVersion.isGreaterThanOrEqualTo(new SemVer('6.0.0-beta.0')) - ) { - console.error(terminal.bold(terminal.red(tags.stripIndents` - This project uses version ${rxjsVersion} of RxJs, which is not supported by Angular v6+. - The official RxJs version that is supported is 5.6.0-forward-compat.0 and greater. - - Please visit the link below to find instructions on how to update RxJs. - https://docs.google.com/document/d/12nlLt71VLKb-z3YaSGzUfx6mJbc34nsMXtByPUN35cg/edit# - ` + '\n'))); - process.exit(3); - } else if ( - angularVersion.isGreaterThanOrEqualTo(new SemVer('6.0.0-rc.0')) - && !rxjsVersion.isGreaterThanOrEqualTo(new SemVer('6.0.0-beta.0')) - ) { - console.warn(terminal.bold(terminal.red(tags.stripIndents` - This project uses a temporary compatibility version of RxJs (${rxjsVersion}). - - Please visit the link below to find instructions on how to update RxJs. - https://docs.google.com/document/d/12nlLt71VLKb-z3YaSGzUfx6mJbc34nsMXtByPUN35cg/edit# - ` + '\n'))); - } - } - -}