保持yarn.lock跨平台?

pix*_*pax 7 node.js docker yarnpkg

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

但是,我刚接触使用yarn,并且看起来锁文件中某些版本的软件包被锁定为特定于我的开发环境,所以当我在一个高山的docker容器中打包我的package.json时它会告诉我类似的东西

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

我猜这意味着包被锁定到特定于OSX的特定版本或一组依赖项.

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

Ter*_*its 1

不是真正的答案,但是......

\n\n

你的例子不是特定于纱线的问题,yarn.lock或者就此而言npmpackage-lock.jsonfsevents包专门用于 MacOS 文件系统事件。因此,它无法在任何其他平台(例如 Linux)上运行。

\n\n

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

\n\n

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

\n\n

通常,特定于平台的软件包的存在是为了弥补该平台上不兼容或不存在的功能。只要您(或您的依赖项)以每个平台的方式正确处理此问题,就应该没问题。这些包被列为package.json可选包,因为它们预计会在不适合的平台上失败(因此出现警告)。

\n\n

有关这方面的更多信息,Yarn 对依赖项类型有很好的解释,其中包括可选依赖项:

\n\n
\n

这对于那些不一定能在每台机器上运行的依赖项很有用,并且您有一个后备计划,以防它们未安装...

\n
\n\n

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

\n

  • 问题是我们无法控制依赖项的依赖项。我们可能会明确选择那些不特定于操作系统的依赖项,但我们只要树深处某处的一个依赖项具有特定于操作系统的依赖项就足够了,这足以拥有一个特定于操作系统的锁定文件。 (6认同)