跳到主要内容
版本:Next

pnpm 安装

别名:i

pnpm install 用于安装项目的所有依赖。

在 CI 环境中,如果存在锁文件但需要更新,则安装会失败。

在[工作区]中,pnpm install 会安装所有项目的依赖。如果要禁用此行为,请将 recursive-install 设置为 false

快速参考

命令含义
pnpm i --offline仅从存储安装(离线模式)
pnpm i --frozen-lockfile不更新 pnpm-lock.yaml 文件
pnpm i --lockfile-only仅更新 pnpm-lock.yaml 文件

过滤依赖的选项

没有锁文件时,pnpm 必须创建一个,且必须与依赖过滤无关,因此在没有锁文件的目录运行 pnpm install --prod 仍会解析开发依赖,并在解析失败时报错。此规则的唯一例外是 link: 依赖。

没有 --frozen-lockfile 时,pnpm 会检查 file: 依赖的过期信息,因此在 file: 目标已被删除的环境中运行 pnpm install --prod 且不带 --frozen-lockfile 会报错。

--prod, -P

  • 默认值:false
  • 类型:Boolean

若为 true,pnpm 将不安装任何列在 devDependencies 中的包,并会移除已安装的此类包。 若为 false,pnpm 将安装所有列在 devDependenciesdependencies 中的包。

--dev, -D

仅安装 devDependencies 中的包,并移除已安装的 dependencies 包。

--no-optional

不安装 optionalDependencies 中的包。

选项

--force

强制重新安装依赖:重新获取存储中修改过的包,重建由非兼容版本 pnpm 创建的锁文件和/或模块目录。即使不满足当前环境(cpu、os、arch),也安装所有可选依赖。

--offline

  • 默认值:false
  • 类型:Boolean

若为 true,pnpm 将仅使用存储中已有的包。若找不到包,安装将失败。

--prefer-offline

  • 默认值:false
  • 类型:Boolean

若为 true,将跳过缓存数据的过期检查,但缺失的数据仍会从服务器请求。要强制完全离线模式,请使用 --offline

--no-lockfile

不读取或生成 pnpm-lock.yaml 文件。

--lockfile-only

  • 默认值:false
  • 类型:Boolean

启用后,仅更新 pnpm-lock.yamlpackage.json。不会写入 node_modules 目录。

--fix-lockfile

自动修复损坏的锁文件条目。

--frozen-lockfile

  • 默认值:
    • 非CI环境:false
    • CI环境:true(若存在锁文件)
  • 类型:Boolean

若为 true,pnpm 不生成锁文件,若锁文件与清单不同步、需要更新或不存在锁文件时安装会失败。

该设置在[CI 环境]中默认为 true。通过以下代码检测 CI 环境:

https://github.com/watson/ci-info/blob/44e98cebcdf4403f162195fbcf90b1f69fc6e047/index.js#L54-L61
exports.isCI = !!(
env.CI || // Travis CI, CircleCI, Cirrus CI, GitLab CI, Appveyor, CodeShip, dsari
env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI
env.BUILD_NUMBER || // Jenkins, TeamCity
env.RUN_ID || // TaskCluster, dsari
exports.name ||
false
)

--merge-git-branch-lockfiles

合并所有 git 分支锁文件。 了解更多关于 git 分支锁文件的信息。

--reporter=<name>

  • 默认值:
    • 对于 TTY stdout:default
    • 对于非 TTY stdout:append-only
  • 类型:default, append-only, ndjson, silent

允许选择报告器,用于记录安装进度的调试信息到终端。

  • silent - 不输出任何内容到控制台,包括致命错误
  • default - 当 stdout 是 TTY 时的默认报告器
  • append-only - 输出始终追加到末尾。不执行光标操作
  • ndjson - 最详细的报告器。以 ndjson 格式打印所有日志

如需更改打印的信息类型,请使用 loglevel 设置。

--use-store-server

  • 默认值:false
  • 类型:Boolean
危险

该功能已弃用

在后台启动存储服务器。安装完成后服务器将继续运行。要停止存储服务器,请运行 pnpm server stop

--shamefully-hoist

  • 默认值:false
  • 类型:Boolean

创建扁平的 node_modules 结构,类似于 npmyarn警告:强烈不建议这样做。

--ignore-scripts

  • 默认值:false
  • 类型:Boolean

不执行项目 package.json 及其依赖中定义的任何脚本。

--filter <package_selector>

注意

过滤器目前无法与 v8 默认配置正常工作,你必须显式设置 dedupePeerDependentsfalse 才能正常使用。更多详情请参阅 #6300

了解更多关于过滤的内容。

--resolution-only

重新运行解析:用于打印对等依赖问题。