--saveフラグはnpminstallで何をしますか


102

どちらかでパッケージをインストールする手順が表示されます

npm install <package_name>

または

npm install <package_name> --save

または

npm install <package_name> --save-dev

これらのオプションの違いは何ですか?

回答:


87

npm install <package_name> --saveパッケージをインストールし、package.jsonの依存関係を更新します。この質問が行われたため、npmに変更が加えられ--save、これがデフォルトオプションになりました。したがって--save、依存関係を更新するためにを使用する必要はありません。

npm install <package_name> --no_save パッケージをインストールしますが、package.jsonにリストされている依存関係は更新しません。

npm install <package_name> ---save-devdevDependenciesパッケージ内のを更新します。これらは、ローカルのテストと開発にのみ使用されます。

詳細については、https://docs.npmjs.com/getting-started/using-a-package.jsonをご覧ください


3
これは、「npm--saveflag」でのグーグル検索のトップアンサーでした。正しい情報で更新することを検討してください。つまり、-saveがデフォルトになり、package.jsonの依存関係のリストを更新しないために--no-saveが必要です
Jonas Rosenqvist

52

npm installは、メインのpackage.jsonのパッケージバージョンを保存または更新する3つの排他的なオプションのフラグを取ります。

-S, --save:パッケージは依存関係に表示されます。

-D, --save-dev:パッケージはdevDependenciesに表示されます。

-O, --save-optional:パッケージはoptionalDependenciesに表示されます。

上記のオプションのいずれかを使用して依存関係をpackage.jsonに保存する場合、追加のオプションのフラグがあります。

-E, --save-exact:保存された依存関係は、npmのデフォルトのsemver range演算子を使用するのではなく、正確なバージョンで構成されます。さらに、npm-shrinkwrap.jsonがある場合は、それも更新されます。

<scope>オプションです。パッケージは、指定されたスコープに関連付けられたレジストリからダウンロードされます。指定されたスコープにレジストリが関連付けられていない場合は、デフォルトのレジストリが想定されます。npm-scopeを参照してください。

注:スコープ名に@記号を含めない場合、npmはこれを代わりにGitHubリポジトリとして解釈します。以下を参照してください。スコープ名の後にはスラッシュを付ける必要があります。

例:

npm install sax --save
npm install githubname/reponame
npm install @myorg/privatepackage
npm install node-tap --save-dev
npm install dtrace-provider --save-optional
npm install readable-stream --save --save-exact

注:<name>現在の作業ディレクトリに名前の付いたファイルまたはフォルダーがある場合、それをインストールしようとし、有効でない場合にのみ名前でパッケージをフェッチしようとします。

(公式ドキュメントから)https://docs.npmjs.com/cli/install


52
この--saveオプションは引き続き機能しているように見えますが、必須ではなくなりました。パッケージはデフォルトで依存関係に保存されるようになりました。ロジックが逆になりました-パッケージを保存したくない場合は、指定する必要があります--no-save
Coruscate5 2017

ありがとう、@ Coruscate5は私の質問に正確に答えました。
Kon

28

ザ・ --saveフラグは、もはや目的を果たしていません。

以前は、他の回答が指摘したように、--saveフラグはプロジェクトのpackage.jsonファイル内の依存関係を更新していましたが、npm install現在はデフォルトでこの機能が含まれています。

この時点で、npm install依存関係を保存しないようにする場合は、--no-saveフラグを使用する必要があります。

コメントでこれについて言及してくれたCoruscate5に感謝します。

で詳細情報NPMインストールドキュメント

npm installは、指定されたパッケージをデフォルトで依存関係に保存します。さらに、いくつかの追加のフラグを使用して、保存する場所と方法を制御できます。

-P、-save-prod:パッケージが依存関係に表示されます。-Dまたは-Oが存在しない限り、これがデフォルトです。

-D、-save-dev:パッケージがdevDependenciesに表示されます。

-O、-save-optional:パッケージはoptionalDependenciesに表示されます。

--no-save:依存関係への保存を防ぎます。

上記のオプションのいずれかを使用して依存関係をpackage.jsonに保存する場合、2つの追加のオプションフラグがあります。

-E、-save-exact:保存された依存関係は、npmのデフォルトのsemver range演算子を使用するのではなく、正確なバージョンで構成されます。

-B、-save-bundle:保存された依存関係もbundleDependenciesリストに追加されます。


現在の状況カバーする更新答えてくれてありがとう
DrCord

それは私の長年の疑問を明らかにしました。ありがとう
AlokRanjan19年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.