Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
chore: refactor serve command action handler
  • Loading branch information
jamesgeorge007 committed Jun 4, 2019
1 parent 71a58b6 commit d2c7ae4
Showing 1 changed file with 30 additions and 32 deletions.
62 changes: 30 additions & 32 deletions packages/serve/index.ts
Expand Up @@ -15,11 +15,6 @@ import { List } from "@webpack-cli/webpack-scaffold";
* @returns {Void}
*/

const spawnNPMWithArg = (cmd: string): SpawnSyncReturns<Buffer> =>
spawn.sync("npm", ["install", "webpack-dev-server", cmd], {
stdio: "inherit"
});

/**
*
* Installs WDS using Yarn with add etc
Expand All @@ -28,10 +23,32 @@ const spawnNPMWithArg = (cmd: string): SpawnSyncReturns<Buffer> =>
* @returns {Void}
*/

const spawnYarnWithArg = (cmd: string): SpawnSyncReturns<Buffer> =>
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<Buffer> => {
const pmConfig: ConfigType = pm === 'npm' ? npmConfig : yarnConfig;
const options: string[] = [pmConfig['installCmd'], "webpack-dev-server", pmConfig[cmd]];
spawn.sync(pm, options);
};

/**
*
Expand Down Expand Up @@ -117,29 +134,10 @@ export default function serve(): Promise<void | Function> {
(depTypeAns: { confirmDepType: string }): Promise<void | Function> => {
const packager: string = getRootPathModule("package-lock.json") ? "npm" : "yarn";
let spawnAction: () => SpawnSyncReturns<Buffer>;
if (depTypeAns.confirmDepType === "devDependency") {
if (packager === "yarn") {
spawnAction = (): SpawnSyncReturns<Buffer> => spawnYarnWithArg("--dev");
} else {
spawnAction = (): SpawnSyncReturns<Buffer> => spawnNPMWithArg("--save-dev");
}
}
if (depTypeAns.confirmDepType === "dependency") {
if (packager === "yarn") {
spawnAction = (): SpawnSyncReturns<Buffer> => spawnYarnWithArg(" ");
} else {
spawnAction = (): SpawnSyncReturns<Buffer> => spawnNPMWithArg("--save");
}
}
if (depTypeAns.confirmDepType === "optionalDependency") {
if (packager === "yarn") {
spawnAction = (): SpawnSyncReturns<Buffer> =>
spawnYarnWithArg("--optional");
} else {
spawnAction = (): SpawnSyncReturns<Buffer> =>
spawnNPMWithArg("--save-optional");
}
}

spawnAction = (): SpawnSyncReturns<Buffer> =>
spawnWithArg(packager, depTypeAns.confirmDepType);

return processPromise(spawnAction()).then(
(): Promise<void | Function> => {
// Recursion doesn't work well with require call being cached
Expand Down

0 comments on commit d2c7ae4

Please sign in to comment.