2017-03-16 77 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

是否有關於節點和電子本地模塊構建差異的任何文檔? –