Skip to content

Commit 59f2ed3

Browse files
committed
fix: install the latest compatible v2 templates in stead of the latest tag
1 parent bd66302 commit 59f2ed3

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

lib/services/project-templates-service.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ export class ProjectTemplatesService implements IProjectTemplatesService {
3030
}
3131

3232
const templateName = constants.RESERVED_TEMPLATE_NAMES[name.toLowerCase()] || name;
33-
const fullTemplateName = version ? `${templateName}@${version}` : templateName;
33+
version = version || await this.$npmInstallationManager.getLatestCompatibleVersion(templateName);
34+
const fullTemplateName = `${templateName}@${version}`;
3435
const templatePackageJsonContent = await this.getTemplatePackageJsonContent(fullTemplateName);
3536
const templateVersion = await this.getTemplateVersion(fullTemplateName);
3637

test/project-templates-service.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { format } from "util";
88

99
let isDeleteDirectoryCalledForNodeModulesDir = false;
1010
const nativeScriptValidatedTemplatePath = "nsValidatedTemplatePath";
11+
const compatibleTemplateVersion = "1.2.3";
1112

1213
function createTestInjector(configuration: { shouldNpmInstallThrow?: boolean, packageJsonContent?: any } = {}): IInjector {
1314
const injector = new Yok();
@@ -42,6 +43,9 @@ function createTestInjector(configuration: { shouldNpmInstallThrow?: boolean, pa
4243
}
4344

4445
return Promise.resolve(nativeScriptValidatedTemplatePath);
46+
},
47+
getLatestCompatibleVersion: (packageName: string) => {
48+
return compatibleTemplateVersion;
4549
}
4650
});
4751

@@ -164,7 +168,7 @@ describe("project-templates-service", () => {
164168
const fs = testInjector.resolve<IFileSystem>("fs");
165169
fs.exists = (localPath: string): boolean => path.basename(localPath) !== constants.PACKAGE_JSON_FILE_NAME;
166170
const pacoteService = testInjector.resolve<IPacoteService>("pacoteService");
167-
pacoteService.manifest = () => Promise.resolve({ });
171+
pacoteService.manifest = () => Promise.resolve({});
168172
await projectTemplatesService.prepareTemplate(localTemplatePath, "tempFolder");
169173
assert.deepEqual(dataSentToGoogleAnalytics, [
170174
{
@@ -215,7 +219,7 @@ describe("project-templates-service", () => {
215219
const notSupportedVersionString = "not supported version";
216220
const testInjector = createTestInjector({ packageJsonContent: { nativescript: { templateVersion: notSupportedVersionString } } });
217221
const projectTemplatesService = testInjector.resolve<IProjectTemplatesService>("projectTemplatesService");
218-
const expectedError = format(constants.ProjectTemplateErrors.InvalidTemplateVersionStringFormat, 'tns-template-hello-world-ts', notSupportedVersionString);
222+
const expectedError = format(constants.ProjectTemplateErrors.InvalidTemplateVersionStringFormat, `tns-template-hello-world-ts@${compatibleTemplateVersion}`, notSupportedVersionString);
219223
await assert.isRejected(projectTemplatesService.prepareTemplate("typescript", "tempFolder"), expectedError);
220224
});
221225

@@ -238,7 +242,7 @@ describe("project-templates-service", () => {
238242
{
239243
name: "is correct when scoped package name without version is passed",
240244
templateName: "@nativescript/vue-template",
241-
expectedVersion: "",
245+
expectedVersion: compatibleTemplateVersion,
242246
expectedTemplateName: "@nativescript/vue-template"
243247
},
244248
{

0 commit comments

Comments
 (0)