2017-10-10 4 views
1

私はNodejsプロジェクトに入力されたパッケージを使用するたびに、私は二つのことをしなければならない。ノードパッケージのタイプをインストールする最速の方法は?

  • まず、元のパッケージをインストールします。例:npm install express -S
  • 次に、型定義パッケージをインストールします。 npm install @types/express -D

私の問題は、もう1つのパッケージを使用できるように2つのステップを実行する必要があるとき、私は怠惰で少し疲れているということです。これをもっと速く/賢く行う方法はありますか?

+0

任意の種類の反復作業を自動化することができます。あなた自身をスクリプトにしてください。 – Rafael

+0

うわー私はすでにこれを達成する方法がある場合、私は車輪を再発明するために時間を費やす必要はないことも知りません。どのようにdownvoteの価値があるのですか? –

+0

はdown-voteにはコメントできませんが、 'package.json'で依存関係を宣言するのは助けになりませんか? – Searching

答えて

4

バッシュ拡張はどうですか? (あなたは、Linux/MacOSの/ cygwinの上にあるなど)

あなたはバッシュ互換シェルを使用するように余裕があれば、あなたのシェルのブレース展開機能を使用することができます。

npm i -S {,@types/}express 

と同等です:

npm i -S express @types/express 

これの問題は、しかし、それのためのパッケージとタイピングの両方がdependenciespackage.jsonでないdevDependenciesとして保存されるということです。同時にいくつかのパッケージ(とそれらのタイプ)をインストールしたいかもしれません。それでは、そのためのアカウントへの私たちのコマンドを改善しましょう:

echo express lodash | xargs -n 1 -I % sh -c 'npm i -S %; npm i -D @types/%' 

これはexpresslodashの両方をインストールし、また彼らのために@typesます。このコマンドは@typesパッケージを正しくdevDependenciesに配置します。

これをさらに改善することができます。今は、すべてのパッケージに対して別々のnpmが実行され、@typesが実行されるためです。我々が行うことができます他に何を見てみましょう:

P='express lodash' eval 'npm i -S $P; npm i -D `echo $P | sed -E "s/[a-z0-9]+/@types\/&/g"`' 

これは予想通りnpm i 2回、実行されます:これは最も機能完全な方法である

  1. npm i -S express lodash
  2. npm i -D @types/express @types/lodash

をそれを行うには、しかし、ほとんどの場合、重すぎるかもしれません。

希望すると便利です。

+0

ああ、これは面白いですが、それは "古典的な"方法よりも痛いようです。私は単純な方法を探していますが、そうでないかもしれません。とにかく、あなたの助けに感謝します。 –

関連する問題