3

在一个项目中,我用 yarn 替换了 npm 以获得它的好处,并且还强制我们的依赖项通过yarn.lock.

现在,开发人员添加了一个带有 npm@4 的库,它只更改package.jsonyarn.lock.

我原以为该yarn install命令会在构建服务器上崩溃,但 yarn 有——对我来说出乎意料的行为——在它们的最新版本中添加这些库,然后yarn.lock在远程更新:

$ yarn install
[1/4] Resolving packages...
[2/4] Fetching packages...
warning fsevents@1.1.2: The platform "linux" is incompatible with this module.
info "fsevents@1.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 5.07s.

这与纱线的目的相矛盾,因为构建作业不会将其推yarn.lock回存储库,也不应该。

我希望每个开发人员对他们签入的版本负责。

因此,如果and不同步,有没有办法以yarn install错误代码退出?package.jsonyarn.lock

4

1 回答 1

2

你想要的--frozen-lockfile参数:

$ yarn install --frozen-lockfile
yarn install v0.27.5
warning ../package.json: No license field
[1/4] Resolving packages...
error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.

最近在yarn install的文档中也明确了这一点:

yarn install

在本地 node_modules 文件夹中安装 package.json 中列出的所有依赖项。

yarn.lock文件的使用方式如下:

  • 如果存在 yarn.lock 并且足以满足 package.json 中列出的所有依赖项,则安装 yarn.lock 中记录的确切版本,并且 yarn.lock 将保持不变。Yarn 不会检查更新的版本。
  • 如果没有 yarn.lock,或者不足以满足 package.json 中列出的所有依赖项(例如,如果您手动将依赖项添加到 package.json),Yarn 会查找满足 package.json 约束的最新可用版本.json。结果写入yarn.lock。

如果要确保不更新 yarn.lock,请使用--frozen-lockfile.

于 2017-08-10T13:21:57.220 回答