npm install "と "npm run build "の違いは何ですか?
私のプロジェクトでは、npm install
を実行すると npm が失敗し始めることがありますが、npm run build
を実行すると正常に動作することがあります。
これらの2つのターゲット、すなわち install
と run build
の内部動作はどのように異なるのでしょうか?
npm install
は、作業中の node プロジェクトの node_modules/
ディレクトリに依存関係をインストールします。他のnode.jsプロジェクト(モジュール)に対してinstall
を呼び出すことで、自分のプロジェクトの依存関係としてインストールすることができます。
npm run buildは
npm buildのエイリアスで、package.json ファイルで "build" の動作を指定しない限り、何もしません。npm run build
は、npm build
のエイリアスで、package.jsonファイルで"build"が行うことを指定しない限り、何もしません。
buildのドキュメント](https://docs.npmjs.com/cli/build)によると、`build`は`link`や`install`コマンドによって呼び出されます。
これは、npm link と npm install によって呼び出される配管コマンドです。
主な違いは、以下の通りです。
npm install はnpm cli-commandで、Churroが書いているように、あらかじめ定義されたこと、つまり、以下のように指定された依存関係をインストールすることです。 package.json
npm run command-name or npm run-script command-name ( ex. npm run build ) もまた、"command-name" の代わりに指定された名前でカスタムスクリプトを実行するために定義されたclin-commandです。つまり、この場合、npm run buildは この場合、npm run buildは、"build"という名前のカスタムスクリプトコマンドであり、その中で指定されたものを実行します。 その中で指定されたものはすべて実行されます(例えば、以下の package.json の例では **echo 'hello world' となっています)。
注意すべき点は以下の通りです。
もうひとつ、npm build
と npm run build
は別物です。npm build
は Churro が書いたとおりのことをしますが、npm run build
は package.json
の中に書かれたカスタム作業をします。
そして、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
を一回ずつ実行してみると、違いがわかると思います。コマンドの詳細については、npm documentationを参照してください。
お疲れさまでした。
npm run build
は "build" スクリプトを実行して、アプリケーションを実行するスクリプトを作成します。何が問題だったのかを正確に伝えるのは難しいのですが、基本的にスクリプトの設定を見ると、"build"は何らかのビルドツールを使ってアプリケーションを作成し、"start"はビルドが行われたと仮定して、ファイルが存在しないと失敗するのではないかと思います。
典型的なgruntアプリケーションでは、これらのスクリプトに加えて、最後のビルドを削除するための"clean"スクリプトが定義されていたように記憶しています。
ビルドツールは、bin/、dist/、build/などのフォルダにファイルを作成し、スタートスクリプトがそれを呼び出します。npm startが失敗するのは、おそらく
npm clean`などを呼び出して最新のビルドを削除したために、アプリケーションファイルが存在しなくなり、npm startが失敗するのだと思います。
npm build'のソースコードは、この質問の議論にも触れますが、githubにありますので、よろしければご覧ください。npm buildを直接実行した場合、"build"スクリプトが定義されていると、
npm run-script buildとしてビルドスクリプトを呼び出すようにとのエラーで終了しますので、
npm run script`とは異なります。
npm build`が何をしているのかはよくわかりませんが、ポストインストールや依存関係にあるスクリプトのパッケージ化に関係しているようです。これは、パッケージをダウンロードした後に、依存関係で必要とされるCLIビルドスクリプト'sやネイティブライブラリが特定の環境用にビルドされていることを確認しているのではないかと思います。リンクやインストールがこのスクリプトを呼び出す理由はここにあるでしょう。