Skip to content
This repository was archived by the owner on Aug 7, 2021. It is now read-only.

Commit 16b9453

Browse files
committed
refactor: split installer to multiple managers
1 parent 548d0a4 commit 16b9453

18 files changed

+443
-282
lines changed

Diff for: bin/install-ns-webpack

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
#!/usr/bin/env node
2-
var installer = require("../installer");
3-
4-
installer.addProjectFiles();
5-
installer.removeDeprecatedNpmScripts();
6-
installer.addNpmScripts();
7-
installer.addProjectDependencies();
2+
const installer = require("../installer");
3+
installer.install();

Diff for: bin/ns-verify-bundle

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const path = require("path");
44
const fs = require("fs");
55

66
const PROJECT_DIR = path.resolve(__dirname, "../../../");
7-
console.log(PROJECT_DIR);
87
const APP_ID = require(path.resolve(PROJECT_DIR, "./package.json")).nativescript.id;
98
const APP_NAME = APP_ID.substring(APP_ID.lastIndexOf(".") + 1);
109
const PROJECT_PATHS = {

Diff for: bin/ns-webpack-update

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/usr/bin/env node
2+
const path = require("path");
3+
const fs = require("fs");
4+
5+
const helpers = require("../projectHelpers");
6+
const forceUpdateProjectDeps = require("../dependencyManager").forceUpdateProjectDeps;
7+
8+
const PROJECT_DIR = path.resolve(__dirname, "../../../");
9+
const packageJson = helpers.getPackageJson(PROJECT_DIR);
10+
11+
forceUpdateProjectDeps(packageJson);
12+
helpers.writePackageJson(packageJson, PROJECT_DIR);

Diff for: bin/ns-webpack-update.cmd

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
@node %~dp0\ns-webpack-update %*

Diff for: bin/remove-ns-webpack

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
#!/usr/bin/env node
2-
var installer = require("../installer");
3-
4-
installer.removeProjectFiles();
5-
installer.removeDeprecatedNpmScripts();
6-
installer.removeNpmScripts();
7-
installer.removeProjectDependencies();
2+
const installer = require("../installer");
3+
installer.uninstall();

Diff for: bin/remove-ns-webpack.cmd

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
@node %~dp0\install-ns-webpack %*
1+
@node %~dp0\remove-ns-webpack %*

Diff for: dependencyManager.js

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
const helpers = require("./projectHelpers");
2+
3+
function forceUpdateProjectDeps(packageJson) {
4+
addProjectDeps(packageJson, true);
5+
}
6+
7+
function addProjectDeps(packageJson, force = false) {
8+
const depsToAdd = getRequiredDeps(packageJson);
9+
packageJson.devDependencies = packageJson.devDependencies || {};
10+
let oldDeps = packageJson.devDependencies;
11+
12+
let alreadyAdded = false;
13+
Object.keys(depsToAdd).forEach(function(name) {
14+
const version = depsToAdd[name];
15+
alreadyAdded = addDependency(oldDeps, name, version, force) || alreadyAdded;
16+
});
17+
18+
if (alreadyAdded) {
19+
console.error("Some deps were not updated because they were already added.");
20+
console.error("If you want to force update them, please run './node_modules/.bin/ns-webpack-update'");
21+
}
22+
}
23+
24+
function addDependency(deps, name, version, force) {
25+
if (!deps[name] || force) {
26+
deps[name] = version;
27+
console.info(`Adding dev dependency: ${name}@${version}`);
28+
return false;
29+
} else {
30+
console.info(`Dev dependency: ${name} already added. Leaving version: ${deps[name]}`);
31+
return true;
32+
}
33+
}
34+
35+
function getRequiredDeps(packageJson) {
36+
var deps = {
37+
"webpack": "~2.3.3",
38+
"webpack-sources": "~0.2.3",
39+
"copy-webpack-plugin": "~4.0.1",
40+
"raw-loader": "~0.5.1",
41+
"nativescript-css-loader": "~0.26.0",
42+
"resolve-url-loader": "~2.0.2",
43+
"extract-text-webpack-plugin": "~2.1.0",
44+
};
45+
46+
if (helpers.isAngular({packageJson})) {
47+
deps["@angular/compiler-cli"] = "~4.0.2";
48+
deps["@ngtools/webpack"] = "1.3.0";
49+
deps["typescript"] = "~2.2.2";
50+
} else if (helpers.isTypeScript({packageJson})) {
51+
deps["awesome-typescript-loader"] = "~3.1.2";
52+
}
53+
return deps;
54+
}
55+
56+
module.exports = {
57+
forceUpdateProjectDeps,
58+
addProjectDeps,
59+
};

0 commit comments

Comments
 (0)