Skip to content

Commit b8712a7

Browse files
committed
delete all unnecessary keys from app/package.json
1 parent cdf43bd commit b8712a7

File tree

3 files changed

+60
-27
lines changed

3 files changed

+60
-27
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

+43-18
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); //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,27 +95,50 @@ export class ProjectService implements IProjectService {
9395
}).future<void>()();
9496
}
9597

96-
private mergeProjectAndTemplateProperties(projectDir: string, templatePath: string): void {
97-
let templatePackageJsonPath = path.join(templatePath, constants.PACKAGE_JSON_FILE_NAME);
98-
99-
if (this.$fs.exists(templatePackageJsonPath)) {
100-
let projectPackageJsonPath = path.join(projectDir, constants.PACKAGE_JSON_FILE_NAME);
101-
let projectPackageJsonData = this.$fs.readJson(projectPackageJsonPath);
102-
this.$logger.trace("Initial project package.json data: ", projectPackageJsonData);
103-
let templatePackageJsonData = this.$fs.readJson(templatePackageJsonPath);
104-
if (projectPackageJsonData.dependencies || templatePackageJsonData.dependencies) {
105-
projectPackageJsonData.dependencies = this.mergeDependencies(projectPackageJsonData.dependencies, templatePackageJsonData.dependencies);
98+
private getDataFromJson(templatePath: string): IFuture<any> {
99+
return (() => {
100+
let templatePackageJsonPath = path.join(templatePath, constants.PACKAGE_JSON_FILE_NAME);
101+
if(this.$fs.exists(templatePackageJsonPath)) {
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.`);
106106
}
107+
return null;
108+
}).future<void>()();
109+
}
107110

108-
if (projectPackageJsonData.devDependencies || templatePackageJsonData.devDependencies) {
109-
projectPackageJsonData.devDependencies = this.mergeDependencies(projectPackageJsonData.devDependencies, templatePackageJsonData.devDependencies);
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+
}
110118
}
111119

112-
this.$logger.trace("New project package.json data: ", projectPackageJsonData);
113-
this.$fs.writeJson(projectPackageJsonPath, projectPackageJsonData);
114-
} else {
115-
this.$logger.trace(`Template ${templatePath} does not have ${constants.PACKAGE_JSON_FILE_NAME} file.`);
116-
}
120+
this.$logger.trace("Deleting unnecessary information from template json.");
121+
this.$fs.writeJson(extractedTemplatePackageJsonPath, templatePackageJsonData);
122+
}).future<any>()();
123+
}
124+
125+
private mergeProjectAndTemplateProperties(projectDir: string, templatePackageJsonData: any): IFuture<void> {
126+
return (() => {
127+
if(templatePackageJsonData) {
128+
let projectPackageJsonPath = path.join(projectDir, constants.PACKAGE_JSON_FILE_NAME);
129+
let projectPackageJsonData = this.$fs.readJson(projectPackageJsonPath).wait();
130+
this.$logger.trace("Initial project package.json data: ", projectPackageJsonData);
131+
if(projectPackageJsonData.dependencies || templatePackageJsonData.dependencies) {
132+
projectPackageJsonData.dependencies = this.mergeDependencies(projectPackageJsonData.dependencies, templatePackageJsonData.dependencies);
133+
}
134+
135+
if (projectPackageJsonData.devDependencies || templatePackageJsonData.devDependencies) {
136+
projectPackageJsonData.devDependencies = this.mergeDependencies(projectPackageJsonData.devDependencies, templatePackageJsonData.devDependencies);
137+
}
138+
this.$logger.trace("New project package.json data: ", projectPackageJsonData);
139+
this.$fs.writeJson(projectPackageJsonPath, projectPackageJsonData);
140+
}
141+
}).future<void>()();
117142
}
118143

119144
private mergeDependencies(projectDependencies: IStringDictionary, templateDependencies: IStringDictionary): IStringDictionary {

0 commit comments

Comments
 (0)