@@ -93,16 +93,7 @@ function renderProgressBar (curr, total) {
9393 process . stderr . write ( `[${ complete } ${ incomplete } ]${ bar } ` )
9494}
9595
96- module . exports = async function installDeps ( targetDir , command , cliRegistry ) {
97- const args = [ ]
98- if ( command === 'npm' ) {
99- args . push ( 'install' , '--loglevel' , 'error' )
100- } else if ( command === 'yarn' ) {
101- // do nothing
102- } else {
103- throw new Error ( `Unknown package manager: ${ command } ` )
104- }
105-
96+ async function addRegistryToArgs ( command , args , cliRegistry ) {
10697 if ( command === 'yarn' && cliRegistry ) {
10798 throw new Error (
10899 `Inline registry is not supported when using yarn. ` +
@@ -124,11 +115,10 @@ module.exports = async function installDeps (targetDir, command, cliRegistry) {
124115 args . push ( `--disturl=${ taobaoDistURL } ` )
125116 }
126117 }
118+ }
127119
128- debug ( `command: ` , command )
129- debug ( `args: ` , args )
130-
131- await new Promise ( ( resolve , reject ) => {
120+ function executeCommand ( command , args , targetDir ) {
121+ return new Promise ( ( resolve , reject ) => {
132122 const child = execa ( command , args , {
133123 cwd : targetDir ,
134124 stdio : [ 'inherit' , 'inherit' , command === 'yarn' ? 'pipe' : 'inherit' ]
@@ -162,3 +152,43 @@ module.exports = async function installDeps (targetDir, command, cliRegistry) {
162152 } )
163153 } )
164154}
155+
156+ exports . installDeps = async function installDeps ( targetDir , command , cliRegistry ) {
157+ const args = [ ]
158+ if ( command === 'npm' ) {
159+ args . push ( 'install' , '--loglevel' , 'error' )
160+ } else if ( command === 'yarn' ) {
161+ // do nothing
162+ } else {
163+ throw new Error ( `Unknown package manager: ${ command } ` )
164+ }
165+
166+ await addRegistryToArgs ( command , args , cliRegistry )
167+
168+ debug ( `command: ` , command )
169+ debug ( `args: ` , args )
170+
171+ await executeCommand ( command , args , targetDir )
172+ }
173+
174+ exports . installPackage = async function ( targetDir , command , cliRegistry , packageName , dev = true ) {
175+ const args = [ ]
176+ if ( command === 'npm' ) {
177+ args . push ( 'install' , '--loglevel' , 'error' )
178+ } else if ( command === 'yarn' ) {
179+ args . push ( 'add' )
180+ } else {
181+ throw new Error ( `Unknown package manager: ${ command } ` )
182+ }
183+
184+ if ( dev ) args . push ( '-D' )
185+
186+ await addRegistryToArgs ( command , args , cliRegistry )
187+
188+ args . push ( packageName )
189+
190+ debug ( `command: ` , command )
191+ debug ( `args: ` , args )
192+
193+ await executeCommand ( command , args , targetDir )
194+ }
0 commit comments