前端构建命令pnpm install --no-frozen-lockfile vs pnpm install
pnpm install 和 pnpm 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:安装时不修改锁文件,适用于需要确保锁文件一致性或防止锁文件更新的情况。