前端构建命令pnpm install --no-frozen-lockfile vs pnpm install

pnpm installpnpm install --no-frozen-lockfile 之间的主要区别在于如何理解 pnpm-lock.yaml 文件和依赖版本的解析。

1. pnpm install

  • 默认行为:使用 pnpm-lock.yaml 文件中指定的版本,安装或更新依赖。如果 pnpm-lock.yaml 文件不存在或需要更新,它会自动重新生成。
  • **会修改 pnpm-lock.yaml**:如果某些依赖项的版本或配置发生变化,pnpm 会自动更新锁文件以反映这些变化。

2. pnpm install –no-frozen-lockfile

  • 禁止更新锁文件--no-frozen-lockfile 选项的作用是告诉 pnpm 在安装过程中 不要修改 pnpm-lock.yaml 文件,即使存在依赖冲突或需要更新锁文件的情况。
  • 确保锁文件一致性:这个选项主要用于确保即使有更新或变动,锁文件仍然保持不变。这在 CI/CD 或多人开发环境中尤其有用,可以确保大家的开发环境和依赖版本完全一致,避免不同开发者的依赖发生不一致的问题。

使用场景

  • **pnpm install**:适用于一般的开发场景,当你希望确保所有的依赖项和锁文件都已正确更新时使用。

  • **pnpm install --no-frozen-lockfile**:通常用于 CI/CD 或需要严格控制锁文件版本一致性的场景,特别是当你想要 防止修改 pnpm-lock.yaml 文件 时,确保团队中的每个人都使用相同的依赖版本和构建环境。

举例

假设你在一个团队中,其他同事已经更新了 pnpm-lock.yaml 文件,而你不想在自己的机器上更改锁文件,可以使用 --no-frozen-lockfile 来安装依赖,而不去更新锁文件内容:

1
pnpm install --no-frozen-lockfile

总结

  • pnpm install:会修改锁文件,确保依赖正确安装。
  • pnpm install --no-frozen-lockfile:安装时不修改锁文件,适用于需要确保锁文件一致性或防止锁文件更新的情况。