保持yarn.lock跨平台?

我通常在我的本地开发机器(OSX)上运行npm install命令,以便在一个地方收集我所有的节点模块,这样我就可以查看它们,在我的IDE中完成。

不过,我是使用纱线的新手,看起来locking文件的某些版本被locking为特定于我的开发环境,所以当我在一个高山docker集装箱中打包我的package.json时,它会告诉我

warning fsevents@1.1.2: The platform "linux" is incompatible with this module.

我正在猜测,这意味着软件包被locking到一个特定的版本或一组特定于OSX的依赖关系。

这似乎没有打破任何function,但我担心,它可能会下降。 关于如何保持纱线进行跨平台开发的任何想法? 或者我在这里看到的是完全良性的?

不是一个真正的答案,但…

你的例子不是针对yarn, yarn.locknpmpackage-lock.json的问题。 fsevents包专门用于MacOS文件系统事件。 因此,它不能在任何其他平台(例如Linux)上运行。

如果您直接使用此软件包,则可能需要考虑跨平台的replace。

如果由于依赖项目而出现此警告,则可能需要确保它(以及它的依赖项)是跨平台的。

通常情况下,特定于平台的软件包可用于弥补该平台上不兼容或不存在的function。 只要你(或者你的依赖)正确地处理了这个问题,你就应该没问题。 这些软件包在package.json列为可选项,因为这些软件包预计会在未devise的平台上发生故障(因此是警告)。

有关这方面的更多信息,Yarn对包含可选依赖项的依赖types有很好的解释:

这对于那些不一定适用于每台机器的依赖关系很有用,如果没有安装它们,你就有一个备用计划。

https://yarnpkg.com/lang/en/docs/dependency-types/