2017-02-22 4 views
2

私はVisual Studio Team Servicesのビルドタスクを構築しています。この作業では、linux、mac、windows用に7zipのバイナリをパッケージ化するのに7zip-binを使用しています。他のプラットフォームのオプションの依存関係をインストールするためにnpm installを強制します。

ビルドサーバーにpackage.jsonだけをデプロイする機能があればいいですが、ビルドタスクにはビルド時にすべての依存関係が含まれています。

npmがすべてのOSオプションパッケージを何とかダウンロードする方法はありますか?または、ビルド中に自分でファイルをダウンロードして抽出する必要がありますか?今私は、その結果

npm install 7zip-bin --save 

使用してい

C:\temp>npm install 
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected]^1.0.3 (node_modules\7zip-bin\node_modules\7zip-bin-linux): 
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"linux","arch":"any"} (current: {"os":"win32","arch":"x64"}) 
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected]^1.0.1 (node_modules\7zip-bin\node_modules\7zip-bin-mac): 
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) 

は直接各オプションパッケージをインストールするには、私が上

npm install 7zip-bin-linux --save 

を実行すると、ことはできませんWindowsマシンでは、インストールはスキップされ、EBADPLATFORMエラーが発生します。

は、私は私のマシンで実行これらのことはできません理解し、私はvsixファイル(見せかけZIP)でそれらをパッケージ化する必要があるので、私のビルドタスクは、これらの他のプラットフォーム上で動作しているとき、私はそれらを使用することができます。

答えて

1

7zip-binは、で直接を使用しているオプションの依存関係を変更するかどうか分からないため、これらの3つのオプションパッケージに依存する必要があります。例えば

dependencies: { 
    "7zip-bin-mac": "^1.0.1", 
    "7zip-bin-win": "^2.0.2", 
    "7zip-bin-linux": "^1.0.3" 
} 

いずれかの方法を使用して、インストールを強制的にnpm install -fを実行する必要があります。

+0

これを実行すると、実際にこれらの3つのうちの1つだけがダウンロードされ、インストールされます(またはインストール時にエラーが発生します)。その結果、 'vsix'は拡張機能が構築されたプラットフォームとのみ互換性があります。 – jessehouwing

+0

ああ、あなたが自分で指定したときはどちらもインストールされていません。しかし、 '-f'または' --force'フラグを使ってインストールを強制することができます:)私は答えを更新しました。 –

+0

ああ!それはうまくいくようです! PS '7zip-bin'は従属パッケージの自動解決を行います。 – jessehouwing

関連する問題