当 package.json 和 yarn.lock 不同步时,如何让纱线在纱线安装上失败?



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

现在,开发人员添加了一个带有npm@4的库,它只更改了package.json,当然没有更改yarn.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 的目的相矛盾,因为构建作业不会将yarn.lock推回存储库,也不应该。

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

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

您需要--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 安装文档中也明确了这一点:

yarn install

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新