@@ -8,15 +8,18 @@ var upgrader = require("./tsconfig-upgrader");
88var projectDir = hook . findProjectDir ( ) ;
99if ( 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
2225function 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