删除 yarn.lock 文件并通过运行 yarn install 重新生成它是一个好主意吗?

11

最近我安装了几个npm包,然后不得不将它们删除。现在我不确定yarn.lock文件是否包含一些旧代码。

删除yarn.lock文件并通过运行yarn install命令重新生成它是一个好主意吗?


2
不需要删除文件,只需运行“yarn”即可更新所有依赖项。 - Alexandre Elshobokshy
3
投票重新开放,因为它似乎与“重复”的问题有足够的不同之处。 - stevec
1
同意@stevec,单从标题来看,这看起来很不同。 - Devin Rhode
1
但问题仍然存在。删除yarn.lock是个好主意还是不好呢?重新生成yarn.lock会从yarn upgrade中产生相同的结果吗? - AlvinfromDiaspar
1个回答

16

Yarn.lock 是 yarn 使用的生成文件,用于知道安装了哪些依赖项的版本,因此当您在新机器上运行 yarn install 时,可以再次获取这些确切的版本。您不需要删除它来从中删除不再使用的软件包,只需从 package.json 中删除它们并运行 yarn upgrade,它将卸载这些软件包并生成一个新的锁定文件。


1
我想你是指 yarn upgrade(没有 yarn update 命令)吧?在 npm 和 yarn 之间切换真的很令人困惑! - ninjaPixel
1
@ninjaPixel 你说得对!感谢你指出来,已经更新了答案。 - Alec Joy
4
请注意,执行 yarn upgrade 命令将检查所有依赖项并升级那些在 npm 注册表中有更新版本的依赖项。这意味着您可能需要在执行此操作后进行充分测试,以确保您的应用程序仍然可以正常工作。 - Lee Meador
1
@LeeMeador 嗯,是的,你说得对。现在想起来了,运行yarn或者yarn install(我记不清哪个是正确的了)是否会删除package.json中不再存在的项目而不进行升级呢?既然install从锁定文件中读取,我有些假设应该选择升级方式。 - Alec Joy
1
还不清楚,如果我删除旧的yarn.lock文件并重新生成,在旧和新的机器上安装,它们是否仍然使用完全相同的软件包版本?我之所以问这个问题是因为我发现在删除或不删除旧的yarn.lock文件时,最终生成的yarn.lock文件是不同的。 - user3552178
1
yarn.lock文件的存在是为了锁定您安装的软件包的确切版本。如果您在一个包含yarn.lock文件的目录中运行yarn命令,它将在相同平台的每台机器上安装相同的依赖项。原生依赖项可能因平台而异,因此不能保证在每台机器上都相同,但其他所有依赖项应该是一样的。如果没有yarn.lock文件,yarn将根据package.json文件的约束条件安装所有软件包的最新版本。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接