diff --git a/packages/cli/src/types.ts b/packages/cli/src/types.ts index e7ba9643..7a0c52f9 100644 --- a/packages/cli/src/types.ts +++ b/packages/cli/src/types.ts @@ -50,6 +50,7 @@ export interface NpmConfig { autoInstall?: boolean; /** 安装组件后,npm默认会将依赖写入package.json中,将该值设置为true,则不会写入,默认为true */ keepPackageJsonClean?: boolean; + installArgs?: string; } export interface ModuleMainFilePath { diff --git a/packages/cli/src/utils/resolveAppPackages.ts b/packages/cli/src/utils/resolveAppPackages.ts index 90a8727a..020ddeea 100644 --- a/packages/cli/src/utils/resolveAppPackages.ts +++ b/packages/cli/src/utils/resolveAppPackages.ts @@ -38,7 +38,7 @@ const getRelativePath = (str: string, base: string) => (path.isAbsolute(str) ? p const npmInstall = function (dependencies: Record, cwd: string, npmConfig: NpmConfig = {}) { try { - const { client = 'npm', registry } = npmConfig; + const { client = 'npm', registry, installArgs = '' } = npmConfig; const install = { npm: 'install', yarn: 'add', @@ -49,7 +49,9 @@ const npmInstall = function (dependencies: Record, cwd: string, .map(([name, version]) => (version ? `${name}@${version}` : name)) .join(' '); - const command = `${client} ${install} ${packages}${registry ? ` --registry ${registry}` : ''}`; + const installArgsString = `${installArgs ? ` ${installArgs}` : ''}`; + const registryString = `${registry ? ` --registry ${registry}` : ''}`; + const command = `${client} ${install}${installArgsString} ${packages}${registryString}`; execInfo(cwd); execInfo(command);