任何由 执行的已定义 npm 脚本都npm run
将从 with 中查找可执行的二进制文件
cd your_project
./node_modules/.bin
先文件夹。您还可以通过以下方式查看其完整路径:
npm bin
这些二进制文件来自您的项目定义的依赖项,来自package.json
via npm install
。
npm run start
因此等同于运行:
./node_modules/.bin/react-scripts start
当您尝试运行时
react-scripts start
就其本身而言,您的终端只会查找您的系统PATH
并尝试在那里找到它。
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
是我的路径的一部分。
旁注:
我更喜欢让每个项目在本地定义其特定版本的依赖项,并且只使用它。因为您可能有多个项目依赖于不同版本的二进制文件。
而且,如果您始终使用 中定义的那个package.json
,您将不会遇到问题。
当您的 npm 脚本持续重建状态时,它还可以防止同事出现“在我的机器上工作”问题。
使用 npm 有点麻烦,因为您要么定义要在 npm 脚本中使用的所有依赖库,要么必须运行每个命令,例如:
$(npm bin)/yourCmd
由于我也喜欢yarn
用作 npm 替代品,因此我越来越喜欢它的默认设置,即始终查看项目的 bin 文件夹,以便通过以下方式执行 cmd:
yarn yourCmd
$ "/home/philipp/my-project/node_modules/.bin/yourCmd"