From 83e25444690f6f3cf117c93ac2588d6a2e31cbf5 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 9 Oct 2019 16:03:12 +0200 Subject: [PATCH] feat(@schematics/angular): add migration ensure that `tslib` is installed Related to: https://github.com/angular/angular/pull/32167 --- .../angular/migrations/update-9/add-tslib.ts | 21 +++++++++++++++++++ .../angular/migrations/update-9/index.ts | 2 ++ .../update-9/update-dependencies.ts | 6 +++--- 3 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 packages/schematics/angular/migrations/update-9/add-tslib.ts diff --git a/packages/schematics/angular/migrations/update-9/add-tslib.ts b/packages/schematics/angular/migrations/update-9/add-tslib.ts new file mode 100644 index 000000000000..ad562fcb41c0 --- /dev/null +++ b/packages/schematics/angular/migrations/update-9/add-tslib.ts @@ -0,0 +1,21 @@ +/** + * @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 { Rule } from '@angular-devkit/schematics'; +import { NodeDependencyType, addPackageJsonDependency, removePackageJsonDependency } from '../../utility/dependencies'; +import { latestVersions } from '../../utility/latest-versions'; + +export function addTsLib(): Rule { + return host => { + removePackageJsonDependency(host, 'tslib'); + addPackageJsonDependency(host, { + name: 'tslib', + version: latestVersions.TsLib, + type: NodeDependencyType.Default, + }); + }; +} diff --git a/packages/schematics/angular/migrations/update-9/index.ts b/packages/schematics/angular/migrations/update-9/index.ts index 0d3690a23295..939c8d3d6e9a 100644 --- a/packages/schematics/angular/migrations/update-9/index.ts +++ b/packages/schematics/angular/migrations/update-9/index.ts @@ -8,6 +8,7 @@ import { Rule, chain } from '@angular-devkit/schematics'; import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks'; +import { addTsLib } from './add-tslib'; import { updateLibraries } from './ivy-libraries'; import { updateNGSWConfig } from './ngsw-config'; import { removeTsickle } from './remove-tsickle'; @@ -26,6 +27,7 @@ export default function(): Rule { updateDependencies(), updateServerMainFile(), removeTsickle(), + addTsLib(), (tree, context) => { const packageChanges = tree.actions.some(a => a.path.endsWith('/package.json')); if (packageChanges) { diff --git a/packages/schematics/angular/migrations/update-9/update-dependencies.ts b/packages/schematics/angular/migrations/update-9/update-dependencies.ts index 41456d0087c5..7413be942dcd 100644 --- a/packages/schematics/angular/migrations/update-9/update-dependencies.ts +++ b/packages/schematics/angular/migrations/update-9/update-dependencies.ts @@ -5,12 +5,12 @@ * 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 { Tree } from '@angular-devkit/schematics'; +import { Rule } from '@angular-devkit/schematics'; import { addPackageJsonDependency, getPackageJsonDependency } from '../../utility/dependencies'; import { latestVersions } from '../../utility/latest-versions'; -export function updateDependencies() { - return (host: Tree) => { +export function updateDependencies(): Rule { + return host => { const dependenciesToUpdate: Record = { '@angular/pwa': latestVersions.AngularPWA, '@angular-devkit/build-angular': latestVersions.DevkitBuildAngular,