package.json 中有os
字段。
那么,是否 npm/yarn/yarn2/pnpm 先获取依赖的 pacakge.json,然后解析“os”字段(如果存在),只有在 os 匹配时才下载源代码?
或者,他们只是一次下载所有内容(package.json+source)吗?
上下文
我打算发布一个包,其中包含一些特定于操作系统的代码(由 go 编译)。所以我有 3 个已编译的二进制文件(适用于 windows、linux、macOS)。然而,它们中的每一个都有很大的尺寸。因此,我想避免天真地将它们全部包含在一个包中。因此,我正在考虑将它们分开,如@foo/win32
, @foo/linux
, @foo/darwin
。然后让一个名为的包foo
依赖于所有这些。最终,用户安装npm install foo
而不关心他们的操作系统。这种分离会避免安装不必要的依赖吗?例如,当npm install foo
在 linux 上时,我希望 npm 不安装@foo/win32
,@foo/darwin
在引擎盖下。
谢谢。