lockfile效果调研
NPM
npm install
版本 | package.json | package-lock.json |
---|---|---|
5.0.x | 忽略 | 为准 |
5.1.0 - 5.4.1 | 为准 | 忽略 |
>=5.4.2 | 两者版本不兼容时 | 两者版本兼容时 |
5.0.x 忽略package.json, package-lock.json完全锁定;
5.1.0 - 5.4.1 只要package.json中的更新了, 就无视package-lock.json下载新版本(并更新package-lock.json);
>=5.4.2 根据package.json, package-lock.json版本是否兼容共同确定,兼容以package-lock.json为准,不兼容以package.json为主(并更新package-lock.json);
npm ci
推荐CI打包时使用;
使用npm ci时必须有package-lock.json;
npm ci确保不会更改package-lock.json中的版本,当package.json, package-lock.json版本不兼容时报错;
YARN
yarn 或 yarn install
与npm@5.4.2版本之后表现一致
根据package.json, yarn.lock版本是否兼容共同确定,兼容以yarn.lock为准,不兼容以package.json为主(并更新yarn.lock);
yarn install –frozen-lockfile
推荐CI打包时使用;
使用时必须有yarn.lock;
确保不会更改yarn.lock中的版本,当package.json, yarn.lock版本不兼容时报错;
PNPM
pnpm install
与npm@5.4.2版本之后表现一致
根据package.json, pnpm-lock.yaml版本是否兼容共同确定,兼容以pnpm-lock.yaml为准,不兼容以package.json为主(并更新pnpm-lock.yaml);
pnpm install –frozen-lockfile
推荐CI打包时使用;
使用时必须有pnpm-lock.yaml;
确保不会更改pnpm-lock.yaml中的版本,当package.json, pnpm-lock.yaml版本不兼容时报错;
总结
- 在npm@5.4.2版本之后,npm/yarn/pnpm在使用lockfile的方式上基本一致;
- CI部署时推荐使用 npm ci / yarn install –frozen-lockfile / pnpm install –frozen-lockfile