@@ -11,12 +11,10 @@ export {
11
11
addPathToAdapterConfig ,
12
12
getNearestNodeModulesDirectory ,
13
13
getNearestProjectRootDirectory ,
14
- getNpmInstallStringMappings ,
14
+ getInstallStringMappings ,
15
15
getPrompter ,
16
- generateNpmInstallAdapterCommand ,
16
+ generateInstallAdapterCommand ,
17
17
resolveAdapterPath ,
18
- getYarnAddStringMappings ,
19
- generateYarnAddAdapterCommand ,
20
18
getGitRootPath ,
21
19
} ;
22
20
@@ -55,40 +53,32 @@ function addPathToAdapterConfig (cliPath, repoPath, adapterNpmName) {
55
53
fs . writeFileSync ( packageJsonPath , JSON . stringify ( newPackageJsonContent , null , indent ) + '\n' ) ;
56
54
}
57
55
58
- /**
59
- * Generates an npm install command given a map of strings and a package name
56
+ /*
57
+ * Get additional options for install command
60
58
*/
61
- function generateNpmInstallAdapterCommand ( stringMappings , adapterNpmName ) {
62
-
63
- // Start with an initial npm install command
64
- let installAdapterCommand = `npm install ${ adapterNpmName } ` ;
59
+ function getInstallOptions ( stringMappings ) {
60
+ return Array . from ( stringMappings . values ( ) ) . filter ( Boolean ) . join ( " " )
61
+ }
65
62
66
- // Append the neccesary arguments to it based on user preferences
67
- for ( let value of stringMappings . values ( ) ) {
68
- if ( value ) {
69
- installAdapterCommand = installAdapterCommand + ' ' + value ;
70
- }
71
- }
63
+ /*
64
+ * Get specific install command for passed package manager
65
+ */
66
+ function getInstallCommand ( packageManager ) {
67
+ const fallbackCommand = 'install' ;
68
+ const commandByPackageManager = {
69
+ npm : 'install' ,
70
+ yarn : 'add' ,
71
+ pnpm : 'add' ,
72
+ } ;
72
73
73
- return installAdapterCommand ;
74
+ return commandByPackageManager [ packageManager ] || fallbackCommand ;
74
75
}
75
76
76
77
/**
77
- * Generates an yarn add command given a map of strings and a package name
78
+ * Generates an npm install command given a map of strings and a package name
78
79
*/
79
- function generateYarnAddAdapterCommand ( stringMappings , adapterNpmName ) {
80
-
81
- // Start with an initial yarn add command
82
- let installAdapterCommand = `yarn add ${ adapterNpmName } ` ;
83
-
84
- // Append the necessary arguments to it based on user preferences
85
- for ( let value of stringMappings . values ( ) ) {
86
- if ( value ) {
87
- installAdapterCommand = installAdapterCommand + ' ' + value ;
88
- }
89
- }
90
-
91
- return installAdapterCommand ;
80
+ function generateInstallAdapterCommand ( stringMappings , adapterNpmName , packageManager = "npm" ) {
81
+ return `${ packageManager } ${ getInstallCommand ( packageManager ) } ${ adapterNpmName } ${ getInstallOptions ( stringMappings ) } ` ;
92
82
}
93
83
94
84
/**
@@ -117,24 +107,28 @@ function getNearestProjectRootDirectory (repoPath, options) {
117
107
}
118
108
119
109
/**
120
- * Gets a map of arguments where the value is the corresponding npm strings
110
+ * Gets a map of arguments where the value is the corresponding (to passed package manager) string
121
111
*/
122
- function getNpmInstallStringMappings ( save , saveDev , saveExact , force ) {
123
- return new Map ( )
124
- . set ( 'save' , ( save && ! saveDev ) ? '--save' : undefined )
112
+ function getInstallStringMappings ( { save, dev , saveDev, exact , saveExact, force } , packageManager ) {
113
+ const npm = new Map ( )
114
+ . set ( 'save' , save && ! saveDev ? '--save' : undefined )
125
115
. set ( 'saveDev' , saveDev ? '--save-dev' : undefined )
126
116
. set ( 'saveExact' , saveExact ? '--save-exact' : undefined )
127
117
. set ( 'force' , force ? '--force' : undefined ) ;
128
- }
129
118
130
- /**
131
- * Gets a map of arguments where the value is the corresponding yarn strings
132
- */
133
- function getYarnAddStringMappings ( dev , exact , force ) {
134
- return new Map ( )
119
+ const yarn = new Map ( )
135
120
. set ( 'dev' , dev ? '--dev' : undefined )
136
121
. set ( 'exact' , exact ? '--exact' : undefined )
137
122
. set ( 'force' , force ? '--force' : undefined ) ;
123
+
124
+ const pnpm = new Map ( )
125
+ . set ( 'save' , save && ! saveDev ? '--save-prod' : undefined )
126
+ . set ( 'dev' , saveDev ? '--save-dev' : undefined )
127
+ . set ( 'exact' , saveExact ? '--save-exact' : undefined ) ;
128
+
129
+ const map = { npm, yarn, pnpm } ;
130
+
131
+ return map [ packageManager ] || npm ;
138
132
}
139
133
140
134
/**
0 commit comments