@@ -11,12 +11,10 @@ export {
1111 addPathToAdapterConfig ,
1212 getNearestNodeModulesDirectory ,
1313 getNearestProjectRootDirectory ,
14- getNpmInstallStringMappings ,
14+ getInstallStringMappings ,
1515 getPrompter ,
16- generateNpmInstallAdapterCommand ,
16+ generateInstallAdapterCommand ,
1717 resolveAdapterPath ,
18- getYarnAddStringMappings ,
19- generateYarnAddAdapterCommand ,
2018 getGitRootPath ,
2119} ;
2220
@@ -55,40 +53,32 @@ function addPathToAdapterConfig (cliPath, repoPath, adapterNpmName) {
5553 fs . writeFileSync ( packageJsonPath , JSON . stringify ( newPackageJsonContent , null , indent ) + '\n' ) ;
5654}
5755
58- /**
59- * Generates an npm install command given a map of strings and a package name
56+ /*
57+ * Get additional options for install command
6058 */
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+ }
6562
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+ } ;
7273
73- return installAdapterCommand ;
74+ return commandByPackageManager [ packageManager ] || fallbackCommand ;
7475}
7576
7677/**
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
7879 */
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 ) } ` ;
9282}
9383
9484/**
@@ -117,24 +107,28 @@ function getNearestProjectRootDirectory (repoPath, options) {
117107}
118108
119109/**
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
121111 */
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 )
125115 . set ( 'saveDev' , saveDev ? '--save-dev' : undefined )
126116 . set ( 'saveExact' , saveExact ? '--save-exact' : undefined )
127117 . set ( 'force' , force ? '--force' : undefined ) ;
128- }
129118
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 ( )
135120 . set ( 'dev' , dev ? '--dev' : undefined )
136121 . set ( 'exact' , exact ? '--exact' : undefined )
137122 . 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 ;
138132}
139133
140134/**
0 commit comments