誰かがあなたのプロジェクトのルートディレクトリにnpm installを実行していない場合、どこにすべての依存関係がインストールされますか?
あなたは、NPMは、それがpackage.json
を見つけるまで親ディレクトリを通って上方検索し、node_modules
フォルダ内の依存関係をインストールします「あなたが別のディレクトリでコマンドを実行すると、どこがインストールされます」を意味していることにより、場合そのファイルの横に表示されます。 I.彼らは常にプロジェクトのルートに終わるでしょう。
さらに、このプロジェクトをGithubで複製することを選択した場合はどうなりますか?それはとにかく行く準備ができていますよね?その時点で、ユーザーはプロジェクトに関するメタデータを提供するだけでなく、package.jsonファイルの目的は何ですか?
これは該当しません。ノードプロジェクトは常に.gitignore
というファイルを持っており、node_modules
がバージョン管理にコミットされることを明示的に排除しており、ソースをダウンロードした後にnpm install
を実行することを期待しています。
あなたのGitHubリポジトリにあなたの依存関係を持っていることは非常にいくつかの理由があります - 限り、プロジェクトがSemantic Versioningに準拠して(パッケージの大半がそう)、npm install
は互換性のないバージョンをダウンロードすることが原因とすることはありません、あなたは絶対に必要がある場合依存関係のバージョンをロックダウンするには、npm shrinkwrap
を使用してください。
EDIT:Mattのコメントは非常に親切に指摘したように、シンプルなメタデータを越えて行くNPMのいくつかの機能があります - 私はおそらくほとんどが使用してのScriptsで取得1、あなたがのために、プロジェクト固有のエイリアスを作成することができますコマンドライン操作。
Webpack開発サーバーは、devDependencies
のプロジェクトにローカルにインストールされています(パッケージをインストールするときに--save-dev
オプションを使用して実行できます)。手動で行うと、次の行に何か入力する必要があります。
"./node_modules/.bin/webpack-dev-server" --inline --hot
これはかなり率直に言えば、少し痛みを感じます。代わりに、私は(あなたがいることを毎回入力する必要はありませんので、NPMのスクリプトを使用した場合node_modules/.bin
は、自動的にシステムパスに追加されることに注意してください)私のpackage.jsonにこれを追加することができます。
"scripts": {
"dev": "webpack-dev-server --inline --hot"
}
そして、その後、私は実行する必要があり、すべてがある: - 例えば、prepublish
がにパッケージを公開する前に実行されるこの単純なユースケースを越えて
npm run dev
、自動的に特定のイベント時に呼ばれているいくつかの特別な 'スクリプト名もありますレジストリ。
私は[scripts](https://docs.npmjs.com/misc/scripts)を追加し、[config](https://docs.npmjs.com/misc/config)はパッケージの2つの用途です。 jsonは単純なメタデータを超えています。 – Matt
良い点!私は私の答えを編集して少し詳しく説明します。 –
@JoeClayので、package.jsonファイルはnode_modulesフォルダ内のパッケージを使用するために必要ではありませんか?これらのパッケージをインストールした後、npm ___を使ってそれらを使用することができます。 package.jsonは、スクリプト、設定、メタデータのためのもので、もっと重要なのは、git.ignoreファイルのためにこれらのモジュールがアップロードされないため、プロジェクトに必要なすべてのパッケージをインストールすることです – akantoword