diff --git a/packages/serve/index.ts b/packages/serve/index.ts index 8ae5a867368..7187fefb8b9 100644 --- a/packages/serve/index.ts +++ b/packages/serve/index.ts @@ -15,11 +15,6 @@ import { List } from "@webpack-cli/webpack-scaffold"; * @returns {Void} */ -const spawnNPMWithArg = (cmd: string): SpawnSyncReturns => - spawn.sync("npm", ["install", "webpack-dev-server", cmd], { - stdio: "inherit" - }); - /** * * Installs WDS using Yarn with add etc @@ -28,10 +23,32 @@ const spawnNPMWithArg = (cmd: string): SpawnSyncReturns => * @returns {Void} */ -const spawnYarnWithArg = (cmd: string): SpawnSyncReturns => - spawn.sync("yarn", ["add", "webpack-dev-server", cmd], { - stdio: "inherit" - }); +interface ConfigType { + installCmd: string, + dependency: string, + devDependency: string, + optionalDependency: string +}; + +const npmConfig: ConfigType = { + installCmd: 'install', + dependency: '--save', + devDependency: '--save-dev', + optionalDependency: '--save-optional' +}; + +const yarnConfig: ConfigType = { + installCmd: 'add', + dependency: ' ', + devDependency: '--save', + optionalDependency: '--optinal' +}; + +const spawnWithArg = (pm: string, cmd: string): SpawnSyncReturns => { + const pmConfig: ConfigType = pm === 'npm' ? npmConfig : yarnConfig; + const options: string[] = [pmConfig['installCmd'], "webpack-dev-server", pmConfig[cmd]]; + spawn.sync(pm, options); +}; /** * @@ -117,29 +134,10 @@ export default function serve(): Promise { (depTypeAns: { confirmDepType: string }): Promise => { const packager: string = getRootPathModule("package-lock.json") ? "npm" : "yarn"; let spawnAction: () => SpawnSyncReturns; - if (depTypeAns.confirmDepType === "devDependency") { - if (packager === "yarn") { - spawnAction = (): SpawnSyncReturns => spawnYarnWithArg("--dev"); - } else { - spawnAction = (): SpawnSyncReturns => spawnNPMWithArg("--save-dev"); - } - } - if (depTypeAns.confirmDepType === "dependency") { - if (packager === "yarn") { - spawnAction = (): SpawnSyncReturns => spawnYarnWithArg(" "); - } else { - spawnAction = (): SpawnSyncReturns => spawnNPMWithArg("--save"); - } - } - if (depTypeAns.confirmDepType === "optionalDependency") { - if (packager === "yarn") { - spawnAction = (): SpawnSyncReturns => - spawnYarnWithArg("--optional"); - } else { - spawnAction = (): SpawnSyncReturns => - spawnNPMWithArg("--save-optional"); - } - } + + spawnAction = (): SpawnSyncReturns => + spawnWithArg(packager, depTypeAns.confirmDepType); + return processPromise(spawnAction()).then( (): Promise => { // Recursion doesn't work well with require call being cached