Skip to content

Commit cd7e8a5

Browse files
authored
feat(postinstall): force update TypeScript if you use NS 3.0 (#29)
1 parent c3e0ee0 commit cd7e8a5

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

postinstall.js

+14-6
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ var upgrader = require("./tsconfig-upgrader");
88
var projectDir = hook.findProjectDir();
99
if (projectDir) {
1010
var tsconfigPath = path.join(projectDir, "tsconfig.json");
11+
var hasModules30 = upgrader.hasModules30(projectDir);
1112
if (fs.existsSync(tsconfigPath)) {
1213
upgrader.migrateTsConfig(tsconfigPath, projectDir);
1314
} else {
1415
createTsconfig(tsconfigPath);
1516
}
16-
if (!upgrader.hasModules30(projectDir)) {
17+
18+
if (!hasModules30) {
1719
createReferenceFile();
1820
}
19-
installTypescript();
21+
22+
installTypescript({force: hasModules30});
2023
}
2124

2225
function createReferenceFile() {
@@ -60,12 +63,17 @@ function getProjectTypeScriptVersion() {
6063
}
6164
}
6265

63-
function installTypescript() {
64-
var installedTypeScriptVersion = getProjectTypeScriptVersion();
65-
if (installedTypeScriptVersion) {
66+
function installTypescript({force = false} = {}) {
67+
const installedTypeScriptVersion = getProjectTypeScriptVersion();
68+
69+
if (installedTypeScriptVersion && !force) {
6670
console.log("Project already targets TypeScript " + installedTypeScriptVersion);
6771
} else {
68-
require("child_process").exec("npm install --save-dev typescript", { cwd: projectDir }, function (err, stdout, stderr) {
72+
const command = force ? "npm install -D typescript" : "npm update -D typescript";
73+
74+
console.log("Installing TypeScript...");
75+
76+
require("child_process").exec(command, { cwd: projectDir }, function (err, stdout, stderr) {
6977
if (err) {
7078
console.warn("npm: " + err.toString());
7179
}

0 commit comments

Comments
 (0)