web-dev-qa-db-ja.com

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

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

私のプロジェクトでは、npm installの実行時にnpmが失敗することがありますが、npm run buildを実行すると正常に動作することに気付きました。

これら2つのターゲット、つまりinstallrun buildの内部動作はどのように異なりますか?

58
BalajiK

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

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

buildは、 ビルドのドキュメント に従って、linkおよびinstallコマンドによって呼び出されます。

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

43
Churro

主な違いは::

npm installは、定義済みのもの、つまり、Churroによって書かれたように、package.json内で指定された依存関係をインストールするnpm cliコマンドです。

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

注意すべき点::

1)もう1つ、npm buildnpm run buildは2つの異なるものですnpm buildはChurroによって書かれたとおりに行いますが、npm run buildpackage.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 buildを1つずつ実行すると、違いがわかります。コマンドの詳細については、 npm documentation に従ってください。

乾杯!!

32
MKP

2019年のNPM

npm buildはもう存在しません。今すぐnpm run buildを呼び出す必要があります。詳細は以下をご覧ください。

TLDR;

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

npm run buildpackage.jsonscriptsフィールドからビルドフィールドを実行します。


NPMスクリプトフィールド

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

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


物事を複雑にする

  • npm installnpm run installと同じではありません
  • npm installは、package.json依存関係をインストールしてから、package.jsonscripts.install を実行します。
    • (依存関係がインストールされた後、本質的にnpm run installを呼び出します。
  • npm run installpackage.jsonscripts.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
25
CTS_AE
  • npm installは、package.json構成に依存関係をインストールします。
  • npm run buildは、スクリプト "build"を実行し、アプリケーションを実行するスクリプトを作成しました-たとえば、server.js
  • npm startは、「node server.js」になる「start」スクリプトを実行します

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

あなたはおそらく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ビルドスクリプトまたはネイティブライブラリが、パッケージのダウンロード後に特定の環境用にビルドされることを確認するものと思われます。これが、リンクとインストールがこのスクリプトを呼び出す理由です。

1
Chanoch