2016-06-24 25 views
1

私のnodejsアプリケーションはRaspberry Piで動作し、SPIインターフェイスを使用します。 WindowsではSPIを使用できません。nodejs npmプラットフォーム固有のパッケージをインストール

私が使用しているnpmパッケージは、期待通りにWindowsにインストールできません。 Windowsでいくつかのテストを行い、テストしたいと思いますが、このモジュールをロードするのにNPMが に失敗した場合、手動による回避策が余りにも多くなります。

NPMインストールがRaspberryで実行され、Windows上に 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"} 

は、パッケージが失敗しています。代替のための 疑似コード:

"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") 

package.jonファイルのいずれか解決策は素晴らしいことです。 ご協力いただきありがとうございます。

+0

あなたは、あなたが 'platform'とプログラム的に' NPMのinstall'を( '( 'NPM' を必要と経由)')チェックpostinstall' 'で実行するノードのスクリプトを作ることができ – topheman

+0

を助けてくれてありがとう – grabbag

答えて

0

あなたはmy_moduleでこれを使用することができます...など、「x64の」、「腕」のいずれかを返します)(現在のos.archを取得するために、Node.jsの中

をOSモジュールを使用することができます。 jsを使用して、必要なパッケージを確認します。

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

+0

os.archを使ってパッケージのnpmインストールを変更するにはどうすればよいですか?私はos.archがjsコードの中に別のパッケージが必要であることがわかる。しかし、インストールに失敗したパッケージは、これまでにインストールする前にインストールを駄目にするでしょう。だから私は何がインストールされるのを制御できるようにする必要があると思う。 – grabbag

+0

この場合、Windowsでnpm installを実行するときに、--only = devフラグを指定することができます。次に、あなたは "偽のpi-spi"のdevDependenciesに "依存関係のための依存関係"を変更することができます。詳細はこちら[link](http://stackoverflow.com/questions/9268259/how-do-you-prevent-install-of-devdependencies-npm-modules-for-node-js-package?rq=1) – JayhoPeter

+0

ありがとうございました。ドットが接続されました。 optionalDependenciesは、Windows上でspiが失敗した場合、require( "pi-spi")を捕まえるようにします。 – grabbag

関連する問題