@@ -22,30 +22,33 @@ import { processPromise } from "@webpack-cli/utils/resolve-packages";
2222 * @returns {Void }
2323 */
2424
25- interface ConfigType {
26- installCmd : string ;
27- dependency : string ;
28- devDependency : string ;
29- optionalDependency : string ;
25+ interface Commands {
26+ dependency : string [ ] ;
27+ devDependency : string [ ] ;
28+ optionalDependency : string [ ] ;
3029}
3130
32- const npmConfig : ConfigType = {
33- installCmd : "install" ,
34- dependency : "--save" ,
35- devDependency : "--save-dev" ,
36- optionalDependency : "--save-optional"
37- } ;
31+ interface PackageManagerConfig {
32+ [ key : string ] : Commands ;
33+ }
3834
39- const yarnConfig : ConfigType = {
40- installCmd : "add" ,
41- dependency : " " ,
42- devDependency : "--save" ,
43- optionalDependency : "--optional"
35+ const pmConfig : PackageManagerConfig = {
36+ npm : {
37+ dependency : [ "install" , "--save" ] ,
38+ devDependency : [ "install" , "--save-dev" ] ,
39+ optionalDependency : [ "install" , "--save-optional" ]
40+ } ,
41+ yarn : {
42+ dependency : [ "add" ] ,
43+ devDependency : [ "add" , "-D" ] ,
44+ optionalDependency : [ "add" , "--optional" ]
45+ }
4446} ;
4547
4648const spawnWithArg = ( pm : string , cmd : string ) : SpawnSyncReturns < Buffer > => {
47- const pmConfig : ConfigType = pm === "npm" ? npmConfig : yarnConfig ;
48- const options : string [ ] = [ pmConfig . installCmd , "webpack-dev-server" , pmConfig [ cmd ] ] ;
49+ const [ installCmd , ...flags ] = pmConfig [ pm ] [ cmd ] ;
50+ const options : string [ ] = [ installCmd , "webpack-dev-server" , ...flags ] ;
51+
4952 return spawn . sync ( pm , options , { stdio : "inherit" } ) ;
5053} ;
5154
0 commit comments