0

我想为 Electron 的原生 Node.js 插件分发预构建的二进制文件。

大概 Node ABI 在主要颠簸之间发生变化,所以我想知道node-pre-gyp使用正确版本的 Node.js 运行是否会削减它,还是我必须运行electron-rebuild并发布重建的二进制文件?

一个小实验表明 node-pre-gyp 在电子环境中运行时找不到编译好的二进制文件。所以似乎electron-rebuild可以修补它。

4

2 回答 2

3

我查看了来源,electron-builder发现它只是install在包上运行。

因此,拥有以下安装钩子就足够了:

node-pre-gyp install --fallback-to-build

我不再electron-rebuild直接使用,因为我首先生成了正确的二进制文件,但我运行electron-builder install-app-deps的可能类似。

在这一点上,我认为没有任何理由打扰prebuild和。prebuild-install这是另外两个依赖项,它们屏蔽了node-pre-gyp已经node-gyp实现的内容。

我修改了我的 travis 脚本,以便并排运行 node 和 electron 的构建:

# build for nodejs
- npm install --build-from-source

# build for electron
- npm install --build-from-source --runtime=electron --target=$ELECTRON_VERSION --dist-url=https://atom.io/download/atom-shell

打包步骤必须使用相同的标志运行两次,即:

- if [[ "${TRAVIS_TAG}" != "" ]]; then npm run package --verbose; fi
- if [[ "${TRAVIS_TAG}" != "" ]]; then npm run package --runtime=electron --target=$ELECTRON_VERSION --verbose; fi

Travis 和 Appveyor 都支持上传到 Github Releases 或 S3,因此使用prebuildor也没有任何好处node-pre-gyp-github,例如 Travis:

deploy:
  provider: releases
  api_key:
    secure: ENCRYPTED_KEY
  file_glob: true
  file: build/stage/$PACKAGE_VERSION/*.tar.gz
  skip_cleanup: true
  on:
    tags: true
于 2018-03-13T11:32:00.553 回答
1

您可以使用prebuild为电子创建预构建的二进制文件。我们将其用于leveldown.

https://github.com/prebuild/prebuild

于 2018-03-10T00:03:05.577 回答