2017-08-13 5 views
0

にリダイレクトするものによってNPM開始を置き換える:それは私がコードをテストし、.jsonファイルに存在しています

"scripts": { 
    "start": "react-scripts start", 
    "build": "react-scripts build" 
} 

私はコンソールで

npm start 

を実行すると、コードがうまく動作します。

しかし、npm startは、ショートカットです。私が書いた場合、コンソールではなく、

react-scripts start 

のようになります。私のエラーメッセージは

react-scripts: command not found 

なぜですか?これは同等ではない?反応スクリプトが見つからない場合、npm startの使い方は?

あなたは

答えて

1

npm runでexexcuted任意の定義されたNPMのスクリプトは最初

cd your_project 
./node_modules/.bin 

フォルダでから後実行バイナリを探しますありがとうございました。これらのバイナリはnpm install経由package.jsonから、あなたのプロジェクトの定義された依存関係から来ている

npm bin 

:あなたはまた、経由フルパスを見ることができます。

./node_modules/.bin/react-scripts start 

あなたが自分自身で

react-scripts start 

を実行しようとすると、端末は、あなたのシステムのPATHを見上げるとそこにそれを見つけるためにしようとします:

npm run startは、実行中にeuquivalentそれゆえです。

echo $PATH 

あなたが唯一のグローバル、ローカルおよびインストールされていないreact-scriptsしているのであれば、それは実行可能なバイナリを見つけ、それ故に失敗しません。

あなたは世界的にそれを実行したい場合、あなたは世界的にそれをインストールする必要があります。

npm install -g react-scripts 
which react-scripts 
~/.nvm/versions/node/v7.10.0/bin/react-scripts // 

~/.nvm/versions/node/v7.10.0/binは私のPATHの一部です。


Sidenotes:

私は各プロジェクトを持つことを好むが、ローカルに彼らの特定のバージョンで、独自の依存関係を定義し、唯一それを使用します。異なるバージョンのバイナリに依存する複数のプロジェクトがあるかもしれません。

また、package.jsonに定義されているものを一貫して使用すると、問題は発生しません。

これはまた、npmスクリプトが一貫して状態を再構築するときに、同僚の「自分のマシンでの作業」の問題を防ぎます。NPMで

あなたはNPMスクリプトで使用するライブラリを使用すると、すべての依存関係を定義するか、あなたのような各コマンドを実行するために持っているとして、それは少し厄介です:としてもyarnを使用してのように、私ので

$(npm bin)/yourCmd 

私のnpmの置き換え、私はいつでもcmdを実行するために、プロジェクトのbinフォルダを調べるためにデフォルトを好きになった:

yarn yourCmd 
$ "/home/philipp/my-project/node_modules/.bin/yourCmd" 
関連する問題