Skip to content

Commit c0d4e47

Browse files
committed
fix: reduce the npm calls during migration
1 parent e795a8b commit c0d4e47

File tree

3 files changed

+11
-10
lines changed

3 files changed

+11
-10
lines changed

lib/controllers/migrate-controller.ts

+6-5
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export class MigrateController extends UpdateControllerBase implements IMigrateC
159159
if (ngcVersion) {
160160
// e.g. 8.0.3
161161
ngcVersion = await this.$packageInstallationManager.maxSatisfyingVersion(ngcPackageName, ngcVersion);
162-
const ngcManifest = await this.getTemplateManifest(ngcPackageName, ngcVersion);
162+
const ngcManifest = await this.getPackageManifest(ngcPackageName, ngcVersion);
163163
// e.g. >=3.4 <3.5
164164
verifiedVersion = (ngcManifest && ngcManifest.peerDependencies &&
165165
ngcManifest.peerDependencies[MigrateController.typescriptPackageName]) || verifiedVersion;
@@ -288,7 +288,6 @@ export class MigrateController extends UpdateControllerBase implements IMigrateC
288288

289289
private async migrateDependency(dependency: IMigrationDependency, projectData: IProjectData): Promise<void> {
290290
const hasDependency = this.hasDependency(dependency, projectData);
291-
const dependencyVersion = await this.getDependencyVerifiedVersion(dependency, projectData);
292291
if (dependency.warning) {
293292
this.$logger.warn(dependency.warning);
294293
}
@@ -309,6 +308,7 @@ export class MigrateController extends UpdateControllerBase implements IMigrateC
309308
return;
310309
}
311310

311+
const dependencyVersion = await this.getDependencyVerifiedVersion(dependency, projectData);
312312
if (hasDependency && await this.shouldMigrateDependencyVersion(dependency, projectData)) {
313313
this.$logger.info(`Updating '${dependency.packageName}' to compatible version '${dependencyVersion}'`);
314314
this.$pluginsService.addToPackageJson(dependency.packageName, dependencyVersion, dependency.isDev, projectData.projectDir);
@@ -322,10 +322,11 @@ export class MigrateController extends UpdateControllerBase implements IMigrateC
322322
}
323323

324324
private async getDependencyVerifiedVersion(dependency: IMigrationDependency, projectData: IProjectData): Promise<string> {
325-
const verifiedVersion = dependency.getVerifiedVersion ?
326-
await dependency.getVerifiedVersion(projectData) : dependency.verifiedVersion;
325+
if (!dependency.verifiedVersion && dependency.getVerifiedVersion) {
326+
dependency.verifiedVersion = await dependency.getVerifiedVersion(projectData);
327+
}
327328

328-
return verifiedVersion;
329+
return dependency.verifiedVersion;
329330
}
330331

331332
private async shouldMigrateDependencyVersion(dependency: IMigrationDependency, projectData: IProjectData): Promise<boolean> {

lib/controllers/update-controller-base.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import * as path from "path";
22
import * as semver from "semver";
33

44
export class UpdateControllerBase {
5-
protected getTemplateManifest: Function;
5+
protected getPackageManifest: Function;
66

77
constructor(protected $fs: IFileSystem,
88
protected $platformCommandHelper: IPlatformCommandHelper,
99
protected $platformsDataService: IPlatformsDataService,
1010
protected $packageInstallationManager: IPackageInstallationManager,
1111
protected $packageManager: IPackageManager,
1212
protected $pacoteService: IPacoteService) {
13-
this.getTemplateManifest = _.memoize(this._getTemplateManifest, (...args) => {
13+
this.getPackageManifest = _.memoize(this._getManifestManifest, (...args) => {
1414
return args.join("@");
1515
});
1616
}
@@ -73,7 +73,7 @@ export class UpdateControllerBase {
7373
return maxDependencyVersion;
7474
}
7575

76-
private async _getTemplateManifest(templateName: string, version?: string) {
76+
private async _getManifestManifest(templateName: string, version?: string) {
7777
const packageVersion = semver.valid(version) ||
7878
await this.$packageManager.getTagVersion(templateName, version) ||
7979
await this.$packageInstallationManager.getLatestCompatibleVersionSafe(templateName);

lib/controllers/update-controller.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
5959
public async shouldUpdate({ projectDir, version }: { projectDir: string, version?: string }): Promise<boolean> {
6060
const projectData = this.$projectDataService.getProjectData(projectDir);
6161
const templateName = this.getTemplateName(projectData);
62-
const templateManifest = await this.getTemplateManifest(templateName, version);
62+
const templateManifest = await this.getPackageManifest(templateName, version);
6363
const dependencies = this.getUpdatableDependencies(templateManifest.dependencies);
6464
const devDependencies = this.getUpdatableDependencies(templateManifest.devDependencies);
6565

@@ -93,7 +93,7 @@ export class UpdateController extends UpdateControllerBase implements IUpdateCon
9393

9494
private async updateProject(projectData: IProjectData, version: string): Promise<void> {
9595
const templateName = this.getTemplateName(projectData);
96-
const templateManifest = await this.getTemplateManifest(templateName, version);
96+
const templateManifest = await this.getPackageManifest(templateName, version);
9797
const dependencies = this.getUpdatableDependencies(templateManifest.dependencies);
9898
const devDependencies = this.getUpdatableDependencies(templateManifest.devDependencies);
9999

0 commit comments

Comments
 (0)