npm installはdevDependenciesをインストールしません


256

何らかの理由でWindowsを実行npm installすると、devDependenciesがインストールされません。私の知る限り、そうすべきです。実行すると、npm install --dev devDependenciesがインストールされます。なぜdevDependenciesnpm installインストールしないのかわかりませんが、依存関係のみをインストールします。その理由は何でしょうか?どうすれば修正できますか?

多分私のpackage.jsonに何か問題がありますか?役立つ場合は、以下にリストされています。

{
  "name": "try-brunch",
  "version": "0.1.0",
  "private": "true",
  "devDependencies": {
    "brunch": "^2.0.4",
    "cssnano-brunch": "^1.1.5",
    "javascript-brunch": "^1.8.0",
    "sass-brunch": "^1.9.2",
    "uglify-js-brunch": "^1.7.8"
  },
  "dependencies": {
    "jquery": "^2.1.4"
  }
}

5
なぜそれを修正する必要があるのですか?それはデフォルトでなければなりません!モジュールの開発者にとってdevDependencies文字通りの依存関係です。私はほとんどのnpm install場合、開発するのではなく、それを使用するためのモジュールを賭けています。
КонстантинВан

アプリを作成し、ロガーまたはWebpackプラグインが必要だとします。それらはdevdepsです。それらをインストールする必要があります。npmはそれらをインストールしない場合があります。
Tristan Tzara

1
つまり、のインストールdevDependenciesは、パッケージ(アプリケーション)を作成するときにのみ必要です。使用する必要はありませんdevDependencies。したがって、に追加のフラグをインストールする必要があるのは妥当ですdevDependencies場合はnpm installインストールされdevDependencies 、デフォルトではユーザーは、同様に冗長パッケージになるだろう。
КонстантинВан

文書化された動作は、私がnpm i自分のフォルダで実行すると、py package.jsonを取得してdepとdevdepsの両方をインストールすることです。これは、それが機能することを意図した方法であり、理にかなっています(たとえば、webpackプラグインなど、必要なものがすべて揃っていると期待したnpm i後で実行した場合git clone)。この質問は、実際の動作が意図したものと異なる場合のバグに対処します。pls、docs-docs.npmjs.com/cli/installを見てください。devdepsをインストールしないフラグがありますが、デフォルトの動作はそれらをインストールすることです。これは完全に意味があり、誰もが期待することです
Tristan Tzara

引っ張るたびに、たとえばwebpackプラグイン、typescriptタイプのdefs、またはその他のdevdepsをインストールするために別のコマンドを実行することを忘れないようにする正気な理由がわかりません。npm i 意図された、正常で、文書化された動作の両方をブートストラップする必要があるため、この問題が標準であると言う理由を正直に理解できません
Tristan Tzara

回答:


306

インストールのNPMドキュメントを確認してください

--production(NODE_ENV環境変数が生産に設定されているときや)フラグ、NPMはdevDependenciesに記載されているモジュールをインストールしません。」

--only={prod[uction]|dev[elopment]}引数は、どちらかだけdevDependenciesまたは唯一の非devDependenciesは関係なく、NODE_ENVの設置されることになります。」

やってみました

npm install --only=dev

package.jsonが間違っているのではないかと心配している場合は、これが最善の方法です。新しいフォルダを作成して実行します。

npm init --yes

次に:

npm install --save-dev brunch@^2.0.4
npm install --save-dev cssnano-brunch@^1.1.5
npm install --save-dev javascript-brunch@^1.8.0
npm install --save-dev sass-brunch@^1.9.2
npm install --save-dev uglify-js-brunch@^1.7.8
npm install jquery@^2.1.4 --save

そして、あなたは行ってもいいはずです!そうでなければ、他のオプションを投稿し続けます。

npm構成を確認します。

npm config list

npmは、コマンドライン、環境変数、npmrcファイルから構成設定を取得します。したがって、環境変数とnpmrcファイルを確認してください。

まだ失敗していますか?

では、新しいフォルダーを作成します。理想的には、ファイルシステムの別の場所に作成します。すなわち。同じフォルダ階層にはありません。たとえば、C:\ myNewFolder-ベースのC:ドライブに近いほど優れています。

次に実行します:

npm init --yes

今実行します:

npm install underscore --save

そして最後に:

npm install mocha --save-dev

すべてが期待どおりに機能しますか?

私がやろうとしていることは、問題がグローバルであるか、それとも前のフォルダーおよび依存関係にローカルなものであるかを理解することです。


トリスタン-これはあなたの状況に役立ちますか?正解としてマークを付けてもらえますか、それとも上記を試した結果を教えてください。
arcseldon

2
npm install --only = devはdevdepsをインストールしますが、depsとdevdepsの両方を一度にインストールしたいと思います。パッケージを再作成しても何も変更されないため、package.jsonは問題ないようです。NODE_ENVがデフォルト値としてグローバルに存在することと、プロジェクトの値としてローカルに存在することは正しいのでしょうか?Windowsでこれらの値をどこで確認および変更できますか(私は見ましたが、システム変数NODE_ENVはありません)
Tristan Tzara

@TristanTzara-私は最近、ほとんど独占的にMACで作業しています。ただし、(NTとXPでは数年前)の過去の思い出から-コマンドプロンプトウィンドウに「set」のようなものを入力できます。それ以外の場合は、[システムのプロパティ]-> [詳細]-> [環境変数]に移動し、そこでエントリを確認します。 。NODE_ENVの「キー」を探しています。私は今窓のオプションのためにググりますが、それが役立つ場合に備えてこれを投稿しました。
arcseldon


@TristanTzara-それは知っておくと良いです。1つの考えとして、動作しないディレクトリより上のすべての親ディレクトリを確認してください。既存のnode_modulesフォルダーを探します...依存関係を解決しようとすると、npmは上方向に検索します。これは、ディレクトリツリーのさらに上にある既存のインストール済みモジュールを取得しているため、子フォルダーに自分のモジュールをインストールすることを拒否しているような奇妙なものです。 。通常の場所は、ホームディレクトリのすぐ下です。幸運と私の答えを認めてくれてありがとう:D
arcseldon

85

npm config production値がtrueに設定されているかどうかを確認してください。この値がtrueの場合、開発依存関係をスキップします。

走る npm config get production

設定するには: npm config set -g production false


npm 5.xとnpm 6.xの間のどこかで、値が設定されていない場合、デフォルトではtrueなくデフォルトになりますfalseか?
James Perih

38

env変数NODE_ENVが 'production'に設定されていないことを確認してください。

その場合、--devフラグがないと、dev依存関係はインストールされません。


私は自分のシステム変数を調べましたが、そこにもありません。多分私は間違った場所を見ますか?
Tristan Tzara

13
npm install --devdevDependenciesが再帰的にインストールされることに注意してください。これはあなたが望むものになることはほとんどなく、実際には非推奨です
ウォンコ2016年

ありがとうございました。これが通常のnpmインストールに影響を与えることを知りませんでしたが、それは論理です。:)
Lothre1

6
この--devオプションの使用は非推奨です。--only=dev代わりに使用してください
Sarath Ak

16

package-lock.jsonpackage.jsonの古いバージョンのファイルがあったので、それを削除すると、すべてが正しくインストールされました。


ビンゴ!それで私の問題は解決しました。これをリポジトリにコミットする必要があったようです。
ランダムまたは

9

同様の問題がありました。 npm install --only=dev動作しませんでしたし、どちらも動作しませんでしたnpm rebuild。最終的には、削除node_modulespackage-lock.jsonnpm install再度実行する必要がありました。これで解決しました。


7

次のように、開発の場合のみ、インストールの依存関係の短い方法を使用できます。

npm i -D <dependencies-names>

ベストアンサー。一番上にあることShpuld
wwwwwwwwwwww

6

あなたpackage.jsonが有効であることを確認してください...

次のエラーが発生しました...

npm WARN Invalid name: "blah blah blah"

そして同様に、devDependenciesインストールされなかった。

参考までに、package.json「名前」をblah-blah-blah修正して修正しました。


0

NODE_ENV=productionDockerのビルド中にwhile を設定したため、同じ問題があります。次に、もう1つ追加しますnpm install --only=dev。すべてが正常に動作します。TypeSciprtモジュールを構築するためにdevDependenciesが必要です

RUN npm install
RUN npm install --only=dev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.