预构建电子模块分布



我想为本地 Node 分发预构建的二进制文件.js Electron 的附加组件。

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

一个小实验表明,node-pre-gyp在电子环境中运行时找不到编译的二进制文件。因此,electron-rebuild似乎做了一些事情来修补这一点。

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

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

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

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

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

我修改了 travis 的脚本,以并排运行节点和电子的构建:

# 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版本或S3,因此使用prebuildnode-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

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

https://github.com/prebuild/prebuild

相关内容

  • 没有找到相关文章

最新更新