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