diff --git a/packages/serve/index.ts b/packages/serve/index.ts index c8f471ba551..d52c8ca0c89 100644 --- a/packages/serve/index.ts +++ b/packages/serve/index.ts @@ -22,30 +22,35 @@ import { processPromise } from "@webpack-cli/utils/resolve-packages"; * @returns {Void} */ -interface ConfigType { - installCmd: string; - dependency: string; - devDependency: string; - optionalDependency: string; +interface Commands { + dependency: string[]; + devDependency: string[]; + optionalDependency: string[]; } -const npmConfig: ConfigType = { - installCmd: "install", - dependency: "--save", - devDependency: "--save-dev", - optionalDependency: "--save-optional" -}; +interface PackageManagerConfig { + packageManager: { + [key: string]: Commands; + }; +} -const yarnConfig: ConfigType = { - installCmd: "add", - dependency: " ", - devDependency: "--save", - optionalDependency: "--optional" +const pmConfig: PackageManagerConfig = { + npm: { + dependency: ["install", "--save"], + devDependency: ["install", "--save-dev"], + optionalDependency: ["install", "--save-optional"] + }, + yarn: { + dependency: ["add"], + devDependency: ["add", "-D"], + optionalDependency: ["add", "--optional"] + } }; const spawnWithArg = (pm: string, cmd: string): SpawnSyncReturns => { - const pmConfig: ConfigType = pm === "npm" ? npmConfig : yarnConfig; - const options: string[] = [pmConfig.installCmd, "webpack-dev-server", pmConfig[cmd]]; + const [installCmd, ...flags] = pmConfig[pm][cmd]; + const options: string[] = [installCmd, "webpack-dev-server", ...flags]; + return spawn.sync(pm, options, { stdio: "inherit" }); };