npm installとnpm run buildの違いは何ですか?


113

違いは何であるnpm installとはnpm run build

私のプロジェクトで、npm npm installが実行されると失敗することがありますが、実行するnpm run buildと問題なく動作することに気づきました。

どのようにこれら二つのターゲットの内部の仕組み、すなわちんinstallrun build異なりますか?


1
現在受け入れられている答えは議論の余地があります。MKPとCTS_AEからの回答は、現時点ではより適切であると思います。敬意をもって、これはモデレーターおよび/またはこの質問をした人の通知の下に来るはずです。
Suhas Chikkanna

回答:


69

npm installnode_modules/作業中のノードプロジェクトの依存関係をディレクトリにインストールします。install別のnode.jsプロジェクト(モジュール)を呼び出して、プロジェクトの依存関係としてインストールできます。

npm run buildはのエイリアスでありnpm build、package.jsonファイルで「ビルド」の動作を指定しない限り、何も実行されません。別のプロジェクトで使用する前に、プロジェクトに必要なビルド/準備タスクを実行できます。

buildbuildのドキュメントによると、linkinstallコマンドによって呼び出されます:

これは、npm linkとnpm installによって呼び出されるplumbコマンドです。


37
@MKPが言っnpm run buildnpm buildいるのと同じではないので反対票を投じました。彼らが本当に同じであるか、あなたの答えを正していることを証明できれば、私は再び賛成票を投じます。
ヘンディイラワン

以下のリンクの正解を参考にするnpm buildnpm run build、同じではないと思います。私見、多分@churroからの上の答えは修正する必要があります。私が間違っていたら訂正してください。 stackoverflow.com/questions/29939697/...
Suhasチッカナ

1
残念ながら、@ HendyIrawanは正しく、同じコマンドではありません。これは、投票率の高い回答であり、一部の人々を混乱させる可能性があります。更新する必要があると思います。
rdarioduarte

79

2019年のNPM

npm buildもはや存在しない。npm run build今すぐ電話しなければなりません。以下の詳細情報。

TLDR;

npm install:依存関係をインストールしてinstallから、package.json scriptsフィールドからを呼び出します。

npm run build:フィールドからビルドフィールドを実行しpackage.json scriptsます。


NPMスクリプトフィールド

https://docs.npmjs.com/misc/scripts

npm package.jsonスクリプトフィールドに入力できるものはたくさんあります。上記のドキュメントリンクをチェックして、スクリプトのライフサイクルの上にあるものを確認してください。ほとんどの場合、インストール、公開、アンインストール、テスト、開始、停止、シュリンクラップ、バージョンの前後にスクリプトを実行できる事前フックと事後フックがあります。


物事を複雑にする

  • npm install と同じではありません npm run install
  • npm installpackage.json依存関係をインストールしてから、package.json scripts.install
    • npm run install依存関係がインストールされた後に本質的に呼び出します。
  • npm run installを実行するだけでpackage.json scripts.install依存関係はインストールされません
  • npm build以前は有効なコマンドnpm run buildでした(以前はと同じでした)が、現在はそうではありません。現在は内部コマンドです。実行すると、次のようになります。npm WARN build npm build called with no arguments. Did you mean to npm run-script build?詳細については、ドキュメントをご覧ください。https//docs.npmjs.com/cli/build

5
+1しかし、npm buildもう存在しないと言うのは混乱します。それはあなたが一番下で述べた警告に反応するので、それはそれがnpmに知られている/特別であるという意味でまだ存在します。本質的には今は何もしません。別の質問に対するこの回答は、npm buildvs に関する最短の要約npm run buildです。
bluenote10

1
言い換えれば、糸をチェックする時間ですか?
ムース

44

主な違いは::

npm installは、事前定義された処理を実行するnpm cliコマンドです。つまり、Churroによって記述されたように、package.json内で指定された依存関係をインストールします。

npm run command-nameまたはnpm run-script command-name例: npm run build)も、「command-name」の代わりに指定された名前でカスタムスクリプトを実行するために事前定義されたcliコマンドです。したがって、この場合、npm run buildは「build」という名前のカスタムスクリプトコマンドであり、その中で指定されたすべてを実行します(たとえば、以下のpackage.jsonの例で提供されているecho 'hello world')。

注意すべきPonit ::

1)もう1つ、npm buildそしてnpm run build2つの異なることnpm buildはChurroによって書かれたnpm run buildように行いますが、内部で書かれたカスタム作業を行いますpackage.json

2)そしてnpm buildnpm run build同じではありません。つまり、カスタムビルド(npm run build)スクリプト内で何かを指定npm buildして同じことを期待することはできません。次のことを確認してみてくださいpackage.json

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build":"echo 'hello build'"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {},
  "dependencies": {}
}

そしてnpm run buildnpm build1つずつ実行すると、違いがわかります。コマンドの詳細については、npmのドキュメントを参考にしてください

乾杯!!


11
むしろ「実行しようとするこの」あなたは違いが何であるかをより詳細に説明するならば、私は感謝npm run buildしてnpm build。わかりましたので、どのように同じではありませんか?それで@Churroの答えは間違っていますか?
ヘンディイラワン

7
ええ、何npm buildが謎のままなのでしょう。それを知っておくといいでしょう。私の知る限り、npm buildチュロの書いた通りにやる」というのは正しくありません。Churroはpackage.jsonbuildコマンドで指定されていることを実行すると述べた(scripts私が想定するセクションで定義されているとおり)。しかしnpm run build、それnpm buildはそうであり、package.json scriptsセクションで指定されたビルドコマンドを実行しません。で何をnpm buildすべきかを定義する他の方法がない限りpackage.json、ここでは説明されていませんし、Churroによっても(NPMのドキュメントでは、悲しいことに)説明されていません。
trollkotze

2
だから私はそれを試して、引数なしでnpm WARNビルドが呼び出さnpm buildれたと言いましたもしかして。何もしなかったと思います。ここにすべての答えを読むために時間を費やして、これを自分でしようとした後、私はまだの目的何言うことができない:(。npm buildnpm run-script buildnpm build
bluenote10

4
  • npm install package.json設定に依存関係をインストールします。
  • npm run build スクリプト「build」を実行し、アプリケーションを実行するスクリプトを作成します-server.jsとしましょう
  • npm start 「ノードserver.js」になる「開始」スクリプトを実行します

問題が何であるかを正確に伝えることは困難ですが、基本的にスクリプト構成を見ると、「開始」はビルドが完了していると想定しながら「ビルド」はある種のビルドツールを使用してアプリケーションを作成していると思いますが、ファイルはありません。

bowerまたはgruntを使用している可能性があります-典型的なgruntアプリケーションがこれらのスクリプトと最後のビルドを削除する「クリーン」スクリプトを定義していることを覚えているようです。

ビルドツールは、bin /、dist /、またはbuild /フォルダーにファイルを作成する傾向があり、開始スクリプトが呼び出す-たとえば「node build / server.js」。あなたnpm startが失敗したとき、それはおそらくあなたがnpm clean最新のビルドを削除するためにあなたが呼ばれたか類似しているのでアプリケーションファイルが存在せず、npm startが失敗する原因です。

npm buildのソースコード(この質問での議論に触れるため)は、githubにあり、必要に応じて確認できます。あなたが実行している場合はnpm build、直接、あなたが定義した「ビルド」スクリプトを持って、それはとしてビルドスクリプトを呼び出すためにあなたを求めエラーで終了しますnpm run-script build、それは同じではありませんのでnpm run script

npm buildができるのかはよくわかりませんが、依存関係のポストインストールとパッケージ化スクリプトに関連しているようです。これにより、依存関係に必要なCLIビルドスクリプトまたはネイティブライブラリが、パッケージのダウンロード後に特定の環境用にビルドされることが確実になると思います。これが、リンクとインストールがこのスクリプトを呼び出す理由です。

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