{"version":3,"sources":["../src/package/installPackage.ts"],"names":["installPackage","packageName","options","silent","type","isGlobal","upgrade","use","location","ignoreError","assignObject","packageTool","getPackageTool","args","hasInstalled","cwd","isInstalled","packageIsInstalled","execScript","e"],"mappings":"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","file":"chunk-ACC3IGCP.mjs","sourcesContent":["import { assignObject } from '../object/assignObject'\r\nimport { execScript } from '../misc/execScript'\r\nimport { getPackageTool } from './getPackageTool'\r\nimport { packageIsInstalled } from './packageIsInstalled'\r\n\r\nexport interface installPackageOptions {\r\n    location?: string // 安装位置\r\n    silent?: boolean // 执行安装时静默输出\r\n    type?: 'prod' | 'dev' | 'peer' | 'optional' | 'bundle' // 安装开发依赖\r\n    global?: boolean // 安装为全局依赖\r\n    upgrade?: boolean // 当依赖已经安装时是否进行升级\r\n    use?: 'auto' | string // 使用哪一个包工具\r\n    ignoreError?: boolean // 忽略错误\r\n}\r\n/**\r\n * 在当前项目下安装指定的包\r\n * @param packageName\r\n * @param param1\r\n */\r\nexport async function installPackage(packageName: string, options?: installPackageOptions) {\r\n    const {\r\n        silent,\r\n        type,\r\n        global: isGlobal,\r\n        upgrade,\r\n        use,\r\n        location,\r\n        ignoreError,\r\n    } = assignObject(\r\n        {\r\n            location: process.cwd(),\r\n            global: false,\r\n            silent: true,\r\n            type: 'prod',\r\n            upgrade: true, // 当包已经安装时,是否升级到最新版本\r\n            use: 'pnpm',\r\n            ignoreError: true,\r\n        },\r\n        options,\r\n    )\r\n    const packageTool = use === 'auto' ? getPackageTool() : use\r\n    const args = []\r\n    let hasInstalled = false\r\n    const cwd = process.cwd()\r\n    const isInstalled = await packageIsInstalled(packageName, { location })\r\n    process.chdir(location)\r\n    try {\r\n        if (isInstalled && upgrade) {\r\n            if (packageTool.includes('pnpm')) {\r\n                await execScript(`pnpm upgrade  --latest ${packageName}`, { silent })\r\n            } else if (packageTool.includes('yarn')) {\r\n                await execScript(`yarn upgrade --latest ${packageName}`, { silent })\r\n            } else if (packageTool.includes('npm')) {\r\n                await execScript(`npm upgrade ${packageName}`, { silent })\r\n            } else {\r\n                await execScript(`${packageTool} upgrade ${packageName}`, { silent })\r\n            }\r\n            hasInstalled = true\r\n        } else if (!isInstalled) {\r\n            if (packageTool.includes('pnpm')) {\r\n                if (isGlobal) args.push('-g')\r\n                if (type === 'dev') args.push('-D')\r\n                if (type === 'peer') args.push('-P')\r\n                if (type === 'optional') args.push('-O')\r\n                await execScript(`pnpm add ${args.join(' ')} ${packageName}`, { silent })\r\n            } else if (packageTool.includes('yarn')) {\r\n                if (isGlobal) args.push('-g')\r\n                if (type === 'dev') args.push('-D')\r\n                if (type === 'peer') args.push('-P')\r\n                if (type === 'optional') args.push('-O')\r\n                await execScript(\r\n                    `yarn ${isGlobal ? 'global ' : ''}add  ${args.join(' ')} ${packageName}`,\r\n                    { silent },\r\n                )\r\n            } else if (packageTool.includes('npm')) {\r\n                if (isGlobal) args.push('-g')\r\n                if (type === 'dev') args.push('-D --save-dev')\r\n                if (type === 'bundle') args.push('--save-bundle')\r\n                if (type === 'peer') args.push('-P')\r\n                if (type === 'optional') args.push('-O')\r\n                await execScript(`npm install  ${args.join(' ')} ${packageName}`, { silent })\r\n            } else {\r\n                if (isGlobal) args.push('-g')\r\n                if (type === 'dev') args.push('-D --save-dev')\r\n                if (type === 'peer') args.push('-P')\r\n                if (type === 'optional') args.push('-O')\r\n                await execScript(`${packageTool} install  ${args.join(' ')} ${packageName}`, {\r\n                    silent,\r\n                })\r\n            }\r\n            hasInstalled = true\r\n        }\r\n    } catch (e) {\r\n        if (!ignoreError) throw e\r\n    } finally {\r\n        process.chdir(cwd)\r\n    }\r\n    return hasInstalled\r\n}\r\n"]}