2016-06-24 47 views
1

我的nodejs應用程序在Raspberry Pi上運行,並使用SPI接口。 SPI在Windows上不可用。nodejs npm安裝平臺特定軟件包

我正在使用的npm包無法安裝在windows上,就像我期望的那樣。 我想開發並在Windows上進行一些測試,但是NPM失敗 加載此模塊會強制執行太多手動解決方法。

當我在Raspberry上運行 NPM安裝時,我想要安裝SPI模塊,並在窗口上安裝存根模塊僞造 SPI。

在僞代碼:文件的package.json

"dependencies-for-linux": { "pi-spi": "~1.0.1"}, 
"dependencies-for-win": { "pi-spi": "./some_local_file_to_fake_pi_spi_api"} 

另一種方法可以不中止是安裝包失敗。對於替代 僞代碼:文件package.jon

"dependencies-that-do-not-fail-install" : { "pi-spi": "~1.0.1"} 

my_module.js

var pi_spi = null 
    try{ 
     pi_spi = require("pi-spi") 
    } 
    catch (e) { 
     pi_spi = require("fake-pi-spi") 

兩種解決方案將是巨大的。 非常感謝您的幫助。

+0

你可以讓你在'postinstall'運行節點腳本,你檢查'platform'和編程'NPM install'(通過'要求( '故宮')') – topheman

+0

感謝你的幫助 – grabbag

回答

0

您可以使用OS模塊中的Node.js來獲取當前os.arch(),這將返回「64」,「手臂」,等...

可以在my_module使用。 js看看哪個包需要。

https://nodejs.org/api/os.html

+0

如何使用os.arch來改變軟件包的npm安裝?我看到os.arch可以在js代碼中需要一個替代包。但是,在安裝之前,無法安裝的軟件包會使安裝變得困難。所以我認爲我需要能夠控制安裝的內容。 – grabbag

+0

在這種情況下,當您在Windows中運行npm install時,您可以指定--only = dev標誌。然後,您可以將您的「取勝依賴關係」更改爲dev-pi-spi的devDependencies。在這裏查看更多信息[鏈接](http://stackoverflow.com/questions/9268259/how-do-you-prevent-install-of-devdependencies-npm-modules-for-node-js-package?rq=1) – JayhoPeter

+0

謝謝,現在連接的點。可選的依賴性允許spi在Windows上失敗,試着抓住require(「pi-spi」)。 – grabbag