npm install
とnpm run build
の違いは何ですか?
私のプロジェクトでは、npm install
の実行時にnpmが失敗することがありますが、npm run build
を実行すると正常に動作することに気付きました。
これら2つのターゲット、つまりinstall
とrun build
の内部動作はどのように異なりますか?
npm install
は、作業中のノードプロジェクトのnode_modules/
ディレクトリに依存関係をインストールします。別のnode.jsプロジェクト(モジュール)でinstall
を呼び出して、プロジェクトの依存関係としてインストールできます。
npm run build
はnpm build
のエイリアスであり、package.jsonファイルで「build」が行うことを指定しない限り、何も行いません。別のプロジェクトで使用する前に、プロジェクトに必要なビルド/準備タスクを実行できます。
build
は、 ビルドのドキュメント に従って、link
およびinstall
コマンドによって呼び出されます。
これは、npm linkおよびnpm installによって呼び出される配管コマンドです。
主な違いは::
npm installは、定義済みのもの、つまり、Churroによって書かれたように、package.json内で指定された依存関係をインストールするnpm cliコマンドです。
npm runcommand-nameまたはnpm run-scriptcommand-name(ex。npm run build)は、「command-name」の代わりに指定された名前でカスタムスクリプトを実行するために事前定義されたcliコマンドでもあります。したがって、この場合npm run buildは「build」という名前のカスタムスクリプトコマンドであり、その中に指定されたものをすべて実行します(たとえばecho 'hello world'以下の例package.jsonで指定)。
注意すべき点::
1)もう1つ、npm build
とnpm run build
は2つの異なるものですnpm build
はChurroによって書かれたとおりに行いますが、npm run build
はpackage.json
内に書かれたカスタム作業を行います
2)そして、npm build
とnpm 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 build
とnpm build
を1つずつ実行すると、違いがわかります。コマンドの詳細については、 npm documentation に従ってください。
乾杯!!
npm build
はもう存在しません。今すぐnpm run build
を呼び出す必要があります。詳細は以下をご覧ください。
npm install
:依存関係をインストールし、package.json
install
フィールドからscripts
を呼び出します。
npm run build
:package.json
scripts
フィールドからビルドフィールドを実行します。
https://docs.npmjs.com/misc/scripts
Npm package.json
scriptsフィールドに入れることができる多くのものがあります。上記のドキュメントリンクをスクリプトのライフサイクルより上で確認してください-ほとんどには、インストール、公開、アンインストール、テスト、開始、停止、シュリンクラップ、バージョンの前後にスクリプトを実行できる事前および事後フックがあります。
npm install
はnpm run install
と同じではありませんnpm install
は、package.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/buildnpm install
は、package.json構成に依存関係をインストールします。npm run build
は、スクリプト "build"を実行し、アプリケーションを実行するスクリプトを作成しました-たとえば、server.jsnpm 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ビルドスクリプトまたはネイティブライブラリが、パッケージのダウンロード後に特定の環境用にビルドされることを確認するものと思われます。これが、リンクとインストールがこのスクリプトを呼び出す理由です。