atom / node-keytar

Native Password Node Module
https://atom.github.io/node-keytar
MIT License
1.37k stars 193 forks source link

Does node-keytar use `prebuild`? #262

Closed pjebs closed 4 years ago

pjebs commented 4 years ago

https://www.electron.build/multi-platform-build#docker

You cannot build for Windows using Docker if you have native dependencies and native dependency doesn’t use prebuild.

https://www.npmjs.com/package/prebuild

In order to build the final executable of an electron application for Windows on a Mac computer, it says the above quote.

My only native module is this. I don't actually understand what it means so I was wondering if it was satisfied?

shiftkey commented 4 years ago

Yes, we use prebuild to generate the platform-specific dependencies (so that you don't need to build them on install). These are the current versions (for x64 and x86):

https://github.com/atom/node-keytar/blob/d8636651e133a9d8379fe9ea55aeda05338698e6/package.json#L37-L40

When a tag is published to the repository, Travis and Appveyor will generate the packages and add them to the GitHub release. e.g v5.5.0:

What happens under the hood when you install this package is prebuild-install command runs:

https://github.com/atom/node-keytar/blob/d8636651e133a9d8379fe9ea55aeda05338698e6/package.json#L33

This looks for the corresponding release on GitHub and downloads the right package, based on the version of Node or Electron you are targeting.

If it can't find an asset for your runtime, it'll fall back to building the source.

There is a request to switch things over to prebuildify rather than prebuild in #255, but for now that's how things currently work.

Hope that helps!