openSUSE / obs-service-node_modules

MIT License
7 stars 11 forks source link

resolve arch specific binaries #31

Open Lunarequest opened 1 year ago

Lunarequest commented 1 year ago

in cockpit-tukit we depend on esbuild, esbuild has arch specific binaries as optional deps, eg @esbuild/linux-x64 we currently have hacked around this but it would be nice if obs-service-node_modules could add the required arch specific packages without intervention

AdamMajer commented 1 year ago

Those binaries are ugly things and generally should be supplied outside of npm dependencies. esbuild is a Go binary, for example. I know that it's convenient to put these under node_modules/.bin and have them executable there local to the binary at build time, at the same time, these are kind of equivalent of curl -Ss https://... | sh - binary distribution.

Personally, I'm not sure how to handle this. I see that in https://github.com/openSUSE/cockpit-tukit/blob/master/package-lock.json#L550-L901 you basically have all the platforms there. What is the problem exactly, besides having win32,bsd, etc.?

Lunarequest commented 1 year ago

Those binaries are ugly things and generally should be supplied outside of npm dependencies. esbuild is a Go binary, for example. I know that it's convenient to put these under node_modules/.bin and have them executable there local to the binary at build time, at the same time, these are kind of equivalent of curl -Ss https://... | sh - binary distribution.

Personally, I'm not sure how to handle this. I see that in https://github.com/openSUSE/cockpit-tukit/blob/master/package-lock.json#L550-L901 you basically have all the platforms there. What is the problem exactly, besides having win32,bsd, etc.?

We actually ran into issues where sometimes npm didn't include arch specific binaries. It was very weird

AdamMajer commented 1 year ago

It would be helpful if you can provide an example. Either a package in OBS or package.json where this was missing.