@@ -22,30 +22,33 @@ import { processPromise } from "@webpack-cli/utils/resolve-packages";
22
22
* @returns {Void }
23
23
*/
24
24
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 [ ] ;
30
29
}
31
30
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
+ }
38
34
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
+ }
44
46
} ;
45
47
46
48
const 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
+
49
52
return spawn . sync ( pm , options , { stdio : "inherit" } ) ;
50
53
} ;
51
54
0 commit comments