diff --git a/src/constants/packageManagement.ts b/src/constants/packageManagement.ts index 786ce04..359c860 100644 --- a/src/constants/packageManagement.ts +++ b/src/constants/packageManagement.ts @@ -11,21 +11,28 @@ export const DEFAULT_PM = "npm"; export type PackageManager = "npm" | "yarn" | "pnpm"; -export const PMS: Record = { +export const PMS: Record< + PackageManager, + { lock: string; init: string; install: string; withRegistry: (command: string, registry: string) => string } +> = { npm: { lock: "package-lock.json", init: "init -y", install: "install --save-dev", + withRegistry: (command, registry) => `${command} --registry ${registry}`, }, yarn: { lock: "yarn.lock", init: "init -y", install: "add -D", + withRegistry: (command, registry) => + `export YARN_REGISTRY=${registry} && export YARN_NPM_REGISTRY_SERVER=${registry} && ${command}`, }, pnpm: { lock: "pnpm-lock.yml", init: "init", install: "add --save-dev", + withRegistry: (command, registry) => `${command} --registry ${registry}`, }, }; diff --git a/src/package.ts b/src/package.ts index 1cdcfc8..c79bb68 100644 --- a/src/package.ts +++ b/src/package.ts @@ -91,10 +91,12 @@ export const installPackages = async ( const spinner = ora("Installing packages (this may take a while)").start(); const pluginsPackages = pluginsToInstall.map(packageNameFromPlugin).join(" "); - return new Promise((resolve, reject) => { exec( - `${packageManager} ${PMS[packageManager].install} testplane ${pluginsPackages} --registry "${registry}"`, + PMS[packageManager].withRegistry( + `${packageManager} ${PMS[packageManager].install} testplane ${pluginsPackages}`, + registry, + ), { cwd: dirPath, env: process.env,