2017-03-16 40 views
2

请帮我理解如何为Electron 1.6.2重建本地npm模块?如何为电子重建原生npm模块?

我使用https://electron.atom.io/docs/tutorial/quick-start中的步骤来创建一个简单的Electron应用程序。
然后我安装了ref包并将其加载到main.js中。
ref包 - 它是本地包。我必须重建这个包才能在Electron应用程序中使用它。

我用下面的教程重建天然包 - https://github.com/electron/electron/blob/master/docs/tutorial/using-native-node-modules.md

有3种方法如何重建天然NPM包:

1)“安装的模块和使用电子重建重建为电子” :
我安装了electron-rebuild npm包。
然后,根据教程中,我只需要下面的命令来运行:
\ node_modules.bin \电子rebuild.cmd
但电子重建试图下载https://atom.io/download/electron/v1.6.2/iojs-v1.6.2.tar.gz
为什么下载的东西从https://atom.io/download/electron如果电子发布文件位于这里 - https://github.com/electron/electron/releases
Electron 1.6.2仅在几周前发布,但iojs-v1.6.2.tar.gz于2015年3月发布。
我是否正确理解电子重建下载错误的文件?

2)使用node-gyp手动构建Electron包装。
组HOME =%USERPROFILE%/。电子GYP
CD ./node_modules/ref
节点-GYP重建--target = 1.6.2 --arch = 64 --dist-URL = https://atom.io/download/electron

而这里dist-url使用https://atom.io/download/electron
为什么?
我试过不用--dist-url。
但是,在这种情况下,节点GYP下载以下文件:
GYP HTTP GET https://iojs.org/download/release/v1.6.2/iojs-v1.6.2.tar.gz
GYP HTTP 200 https://iojs.org/download/release/v1.6.2/iojs-v1.6.2.tar.gz
GYP HTTP GET https://iojs.org/download/release/v1.6.2/SHASUMS256.txt
GYP HTTP GET https://iojs.org/download/release/v1.6.2/win-x64/iojs.lib
GYP HTTP GET https://iojs.org/download/release/v1.6.2/win-x86/iojs.lib
GYP HTTP 200 https://iojs.org/download/release/v1.6.2/SHASUMS256.txt
gyp http 200 https://iojs.org/download/release/v1.6.2/win-x64/iojs.lib
gyp http 200 https://iojs.org/download/release/v1.6.2/win-x86/iojs.lib
它是正确的吗?

3)使用npm重建本地包:
rem#电子版本。
set npm_config_target = 1.6.2
rem#Electron的体系结构,可以是ia32或x64。
set npm_config_arch = x64
set npm_config_target_arch = x64
rem#下载Electron的标题。
rem set npm_config_disturl = https://atom.io/download/electron
rem#告诉node-pre-gyp我们正在为Electron构建。
set npm_config_runtime = electron
rem#告诉node-pre-gyp从源代码构建模块。
set npm_config_build_from_source = true
rem#安装所有依赖关系,并将缓存存储到〜/ .electron-gyp。
集HOME =%USERPROFILE.electron-GYP
NPM安装

再次https://atom.io/download/electron
为什么?

有谁知道如何正确地重建Electron 1.6.2的ref本机包?

+0

这里没有问题,dist URL是正确的。这是发布镜像/托管的地方 – MarshallOfSound

+0

@MarshallOfSound我不明白。 Electron 1.6.2于15天前发布。 https://iojs.org/download/release/v1.6.2/iojs-v1.6.2.tar.gz创建于2年前 - 23-Mar-2015。 为什么电子重建使用非常古老的iojs-v1.6.2.tar.gz来用新的Electron 1.6.2重建本地npm包? –

+0

它并没有,由于遗留构建系统工作的方式,在这种情况下,1和3之间的任何节点版本1.6.2被认为是iojs。这就是node-gyp的编写方式,因此电子文件的名称会以这种方式工作 – MarshallOfSound

回答

0

你是对的,给node-gyp的版本映射到Electron版本而不是内部节点版本,因为这是头文件被上传到的版本。实际上,所有这些背后都有一个更复杂的解释,但最终用户应该没有问题。您提供的代码是正确的,并且来自文档。有用。不需要理解为什么的内部工作原理。

+0

好的,我明白了。 现在我使用以下命令来重建ref包: cd。\ node_modules \ ref “D:\\ tools \\ nodejs \\ node.exe”“C:\\ tmp \\ test \\ node_modules \\ node- gyp \\ bin \\ node-gyp.js“”rebuild“”--target = 1.6.1“”--arch = x64“”--build-from-source“--nodedir = D:\ tools \ iojs -v1.6.1 它的工作原理。 但是,当我设置--arch = ia32然后Electron抱怨“错误:%1不是有效的Win32应用程序”。 可能是什么问题? –

+0

是否有关于节点和电子本地模块构建差异的任何文档? –