Skip to content

Commit 751a073

Browse files
committed
delete all unnecessary keys from app/package.json
1 parent 6a2685e commit 751a073

File tree

3 files changed

+47
-14
lines changed

3 files changed

+47
-14
lines changed

.vscode/launch.json

+15-9
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,23 @@
77
{
88
"type": "node",
99
"request": "launch",
10-
"name": "Launch Program (Node 6+)",
11-
"program": "${workspaceRoot}/lib/nativescript-cli.js",
12-
"cwd": "${workspaceRoot}",
10+
"cwd": "${workspaceRoot}/scratch",
1311
"sourceMaps": true,
14-
// define the arguments that you would like to pass to CLI, for example
15-
// "args": [ "build", "android", "--justlaunch" ]
16-
"args": [
12+
"name": "Launch CLI (Node 6+)",
13+
"program": "${workspaceRoot}/lib/nativescript-cli.js",
1714

18-
]
15+
// example commands
16+
"args": [ "create", "cliapp"]
17+
// "args": [ "platform", "add", "[email protected]", "--path", "cliapp"]
18+
// "args": [ "platform", "remove", "android", "--path", "cliapp"]
19+
// "args": [ "plugin", "add", "nativescript-barcodescanner", "--path", "cliapp"]
20+
// "args": [ "plugin", "remove", "nativescript-barcodescanner", "--path", "cliapp"]
21+
// "args": [ "build", "android", "--path", "cliapp"]
22+
// "args": [ "run", "android", "--path", "cliapp"]
23+
// "args": [ "debug", "android", "--path", "cliapp"]
24+
// "args": [ "livesync", "android", "--path", "cliapp"]
25+
// "args": [ "livesync", "android", "--watch", "--path", "cliapp"]
1926
},
20-
2127
{
2228
// in case you want to debug a single test, modify it's code to be `it.only(...` instead of `it(...`
2329
"type": "node",
@@ -34,7 +40,7 @@
3440
"--harmony"
3541
],
3642
"request": "launch",
37-
"name": "Launch Program (Node 4, Node 5)",
43+
"name": "Launch CLI (Node 4, Node 5)",
3844
"program": "${workspaceRoot}/lib/nativescript-cli.js",
3945
"cwd": "${workspaceRoot}",
4046
"sourceMaps": true,

lib/constants.ts

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ export class PackageVersion {
2121
static LATEST = "latest";
2222
}
2323

24+
export let PackageJsonKeysToKeep : Array<String> = ["name", "main", "android", "version"];
25+
2426
export class SaveOptions {
2527
static PRODUCTION = "save";
2628
static DEV = "save-dev";

lib/services/project-service.ts

+30-5
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,9 @@ export class ProjectService implements IProjectService {
7676
try {
7777
//TODO: plamen5kov: move copy of template and npm uninstall in prepareTemplate logic
7878
this.createProjectCore(projectDir, appPath, projectId).wait();
79-
this.mergeProjectAndTemplateProperties(projectDir, appPath).wait(); //merging dependencies from template (dev && prod)
79+
let templatePackageJsonData = this.getDataFromJson(appPath).wait();
80+
this.mergeProjectAndTemplateProperties(projectDir, templatePackageJsonData).wait(); //merging dependencies from template (dev && prod)
81+
this.removeMergedDependencies(projectDir, templatePackageJsonData).wait();
8082
this.$npm.install(projectDir, projectDir, { "ignore-scripts": this.$options.ignoreScripts }).wait();
8183
selectedTemplate = selectedTemplate || "";
8284
let templateName = (constants.RESERVED_TEMPLATE_NAMES[selectedTemplate.toLowerCase()] || selectedTemplate/*user template*/) || constants.RESERVED_TEMPLATE_NAMES["default"];
@@ -93,14 +95,39 @@ export class ProjectService implements IProjectService {
9395
}).future<void>()();
9496
}
9597

96-
private mergeProjectAndTemplateProperties(projectDir: string, templatePath: string): IFuture<void> {
98+
private getDataFromJson(templatePath: string): IFuture<any> {
9799
return (() => {
98100
let templatePackageJsonPath = path.join(templatePath, constants.PACKAGE_JSON_FILE_NAME);
99101
if(this.$fs.exists(templatePackageJsonPath).wait()) {
102+
let templatePackageJsonData = this.$fs.readJson(templatePackageJsonPath).wait();
103+
return templatePackageJsonData;
104+
} else {
105+
this.$logger.trace(`Template ${templatePath} does not have ${constants.PACKAGE_JSON_FILE_NAME} file.`);
106+
}
107+
return null;
108+
}).future<void>()();
109+
}
110+
111+
private removeMergedDependencies(projectDir: string, templatePackageJsonData: any) : IFuture<void> {
112+
return (() => {
113+
let extractedTemplatePackageJsonPath = path.join(projectDir, constants.APP_FOLDER_NAME, constants.PACKAGE_JSON_FILE_NAME);
114+
for(let key in templatePackageJsonData) {
115+
if(constants.PackageJsonKeysToKeep.indexOf(key) === -1) {
116+
delete templatePackageJsonData[key];
117+
}
118+
}
119+
120+
this.$logger.trace("Deleting unnecessary information from template json.");
121+
this.$fs.writeJson(extractedTemplatePackageJsonPath, templatePackageJsonData).wait();
122+
}).future<any>()();
123+
}
124+
125+
private mergeProjectAndTemplateProperties(projectDir: string, templatePackageJsonData: any): IFuture<void> {
126+
return (() => {
127+
if(templatePackageJsonData) {
100128
let projectPackageJsonPath = path.join(projectDir, constants.PACKAGE_JSON_FILE_NAME);
101129
let projectPackageJsonData = this.$fs.readJson(projectPackageJsonPath).wait();
102130
this.$logger.trace("Initial project package.json data: ", projectPackageJsonData);
103-
let templatePackageJsonData = this.$fs.readJson(templatePackageJsonPath).wait();
104131
if(projectPackageJsonData.dependencies || templatePackageJsonData.dependencies) {
105132
projectPackageJsonData.dependencies = this.mergeDependencies(projectPackageJsonData.dependencies, templatePackageJsonData.dependencies);
106133
}
@@ -111,8 +138,6 @@ export class ProjectService implements IProjectService {
111138

112139
this.$logger.trace("New project package.json data: ", projectPackageJsonData);
113140
this.$fs.writeJson(projectPackageJsonPath, projectPackageJsonData).wait();
114-
} else {
115-
this.$logger.trace(`Template ${templatePath} does not have ${constants.PACKAGE_JSON_FILE_NAME} file.`);
116141
}
117142
}).future<void>()();
118143
}

0 commit comments

Comments
 (0)