2017-08-23 5 views
0

私たちには、すべてのブートストラップコードがインストールされている共有ライブラリがあります。ほとんどの人は、生のJavascriptをフロントエンドに使用していますが、Typescriptを使用する人もいます。オプションのNPM依存インストール

特定のフラグを指定した場合にのみインストールされる、Typescript(すべての@typesおよび他のTypescript関連モジュールのような)に対する依存関係のリストもpackage.jsonに含めることができますか? npm installを実行すると、通常のパッケージのみがインストールされますが、npm install --some-flagは追加パッケージもインストールします。

+0

** ** package.jsonではどのように表現しますか? –

+0

それは私が求めていることです。それはすべて可能ですか?おそらく 'additionalDependencies'のようなものでしょうか? – Kousha

答えて

0

あなたが探しているのは、optionalDependenciesと--no-optionalフラグを組み合わせたものでしょう。 https://docs.npmjs.com/files/package.jsonから

optionalDependencies

依存関係を使用することができます場合は、しかし、あなたは、あなたがそれを置いてもよい、それは が見つからないか、インストールに失敗することができない場合は続行するために、NPMをしたいと思いますoptionalDependenciesオブジェクトの にあります。これは、依存関係オブジェクトと同様に、パッケージ名のバージョン またはurlへのマップです。違いは、 ビルドの失敗によってインストールが失敗しないことです。

の依存関係の不足を処理することは、依然としてプログラムの責任です。例えば、このような何か:

try { 
    var foo = require('foo') 
    var fooVersion = require('foo/package.json').version 
} catch (er) { 
    foo = null 
} 
if (notGoodFooVersion(fooVersion)) { 
    foo = null 
} 

// .. then later in your program .. 

if (foo) { 
    foo.doFooThings() 
} 

エントリoptionalDependenciesでは、依存関係にある同じ名前 のエントリを上書きしますので、通常は一つの場所に置くことをお勧めします。

そしてhttps://docs.npmjs.com/cli/installから:

--no-オプション引数は、インストールされ から、オプションの依存関係を防ぐことができます。

+0

その逆がありますか?私はオプションをインストールしないようにデフォルトの動作を行い、フラグを提供する場合にのみオプションをインストールします。 – Kousha

+0

私はそのようなことを認識していません。そのような重要性がある場合は、そうするスクリプトを書かないのはなぜですか? – anon

関連する問題