There is os field in package.json.
So, do npm/yarn/yarn2/pnpm fetch dependency's pacakge.json first, then parse the "os" field(if exists), and download the source code only if os matches?
Or, do they just download every content (package.json+source) just all at once?
Context
I am planning to publish a package that includes some os-specific code(compiled by go). So I have 3 compiled binaries (for windows, linux, macOS). However, each of them has a large size. Thus I want to avoid naively include them all in one package.
Hence, I am thinking of separating them like @foo/win32, @foo/linux, @foo/darwin. Then letting a package named foo depend on all of them. And eventually, users install npm install foo without caring about their os.
Will this separation avoid installing unnecessary dependency?
For example, when npm install foo on linux, I want npm not to install @foo/win32, @foo/darwin under the hood.
Thanks.