Skip to content

Commit 3ad7872

Browse files
Install all dependencies on create
When `tns create <app>` is executed, install all dependencies, so typescript compilation will be enabled immediately when using tsc template.
1 parent 16f13b7 commit 3ad7872

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

lib/services/project-service.ts

+18-12
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export class ProjectService implements IProjectService {
8080
// Delete app/package.json file, its just causing confusion.
8181
// Also its dependencies and devDependencies are already merged in project's package.json.
8282
this.$fs.deleteFile(path.join(projectDir, constants.APP_FOLDER_NAME, constants.PACKAGE_JSON_FILE_NAME)).wait();
83+
this.$npm.install(projectDir, projectDir, { "ignore-scripts": this.$options.ignoreScripts }).wait();
8384
} catch (err) {
8485
this.$fs.deleteDirectory(projectDir).wait();
8586
throw err;
@@ -91,20 +92,25 @@ export class ProjectService implements IProjectService {
9192

9293
private mergeProjectAndTemplateProperties(projectDir: string, templatePath: string): IFuture<void> {
9394
return (() => {
94-
let projectPackageJsonPath = path.join(projectDir, constants.PACKAGE_JSON_FILE_NAME);
95-
let projectPackageJsonData = this.$fs.readJson(projectPackageJsonPath).wait();
96-
this.$logger.trace("Initial project package.json data: ", projectPackageJsonData);
97-
let templatePackageJsonData = this.$fs.readJson(path.join(templatePath, constants.PACKAGE_JSON_FILE_NAME)).wait();
98-
if(projectPackageJsonData.dependencies || templatePackageJsonData.dependencies) {
99-
projectPackageJsonData.dependencies = this.mergeDependencies(projectPackageJsonData.dependencies, templatePackageJsonData.dependencies);
100-
}
95+
let templatePackageJsonPath = path.join(templatePath, constants.PACKAGE_JSON_FILE_NAME);
96+
if(this.$fs.exists(templatePackageJsonPath).wait()) {
97+
let projectPackageJsonPath = path.join(projectDir, constants.PACKAGE_JSON_FILE_NAME);
98+
let projectPackageJsonData = this.$fs.readJson(projectPackageJsonPath).wait();
99+
this.$logger.trace("Initial project package.json data: ", projectPackageJsonData);
100+
let templatePackageJsonData = this.$fs.readJson(templatePackageJsonPath).wait();
101+
if(projectPackageJsonData.dependencies || templatePackageJsonData.dependencies) {
102+
projectPackageJsonData.dependencies = this.mergeDependencies(projectPackageJsonData.dependencies, templatePackageJsonData.dependencies);
103+
}
101104

102-
if(projectPackageJsonData.devDependencies || templatePackageJsonData.devDependencies) {
103-
projectPackageJsonData.devDependencies = this.mergeDependencies(projectPackageJsonData.devDependencies, templatePackageJsonData.devDependencies);
104-
}
105+
if(projectPackageJsonData.devDependencies || templatePackageJsonData.devDependencies) {
106+
projectPackageJsonData.devDependencies = this.mergeDependencies(projectPackageJsonData.devDependencies, templatePackageJsonData.devDependencies);
107+
}
105108

106-
this.$logger.trace("New project package.json data: ", projectPackageJsonData);
107-
this.$fs.writeJson(projectPackageJsonPath, projectPackageJsonData).wait();
109+
this.$logger.trace("New project package.json data: ", projectPackageJsonData);
110+
this.$fs.writeJson(projectPackageJsonPath, projectPackageJsonData).wait();
111+
} else {
112+
this.$logger.trace(`Template ${templatePath} does not have ${constants.PACKAGE_JSON_FILE_NAME} file.`);
113+
}
108114
}).future<void>()();
109115
}
110116

test/project-service.ts

-2
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,6 @@ describe("Project Service Tests", () => {
187187
projectIntegrationTest.assertProject(tempFolder, projectName, "org.nativescript.myapp", projectTemplatesService.prepareTemplate("[email protected]").wait()).wait();
188188
});
189189

190-
/* Uncomment when tns-template-hello-world-ts is public
191190
it("creates valid project from typescript template", () => {
192191
let projectIntegrationTest = new ProjectIntegrationTest();
193192
let tempFolder = temp.mkdirSync("projectTypescript");
@@ -213,7 +212,6 @@ describe("Project Service Tests", () => {
213212
let projectTemplatesService: IProjectTemplatesService = projectIntegrationTest.testInjector.resolve("projectTemplatesService");
214213
projectIntegrationTest.assertProject(tempFolder, projectName, "org.nativescript.myapp", projectTemplatesService.prepareTemplate("tsc").wait()).wait();
215214
});
216-
*/
217215

218216
it("creates valid project from local directory template", () => {
219217
let projectIntegrationTest = new ProjectIntegrationTest();

0 commit comments

Comments
 (0)