我在一个网络应用程序上使用 npm,我在使用一些需要终端命令运行的包时发现了一个问题,比如 nodemon
和 concurrently
我是通过
安装的sudo npm install --save-dev nodemon
当我尝试通过以下方式使用它时:
nodemon ./server.js
我得到一个错误
nodemon command not found
和我同时使用时一样
我也试过
sudo npm install --save nodemon
它不起作用。
只有全局安装才有效
sudo npm install -g nodemon
为什么我在本地安装时不能使用?
注意:我可以在node_modules/.bin
但是下面的效果不太好
node_modules/.bin/nodemon ./server.js
最佳答案
全局包可以直接启动,因为它们默认保存在您的PATH目录中。如果您将包保存在 local
上,您可以在 node_modules/.bin/
上看到它,如您所提到的。因此,如果要在 locally
安装的情况下运行可执行包,有两种方法可以实现您想要的:
- 您可以通过终端以
./node_modules/.bin/nodemon yourscript.js 的形式运行它
或者通过
package.json
文件中的 npmscripts
,您可以这样做:{ "scripts": { "nodemon": "nodemon yourscript.js" } }
并执行
npm run nodemon
。
第二种方法适用于全局或本地安装的包。
我更喜欢在本地安装包,这样我的其他应用就不会受到影响,尤其是当我为每个项目使用不同的包版本时。
更新
关于 npm@5.2.0之后,它带有一个名为 npx 的二进制文件.因此,您可以通过 npx [package]
在终端上运行特定的包,它会执行您的本地或全局 npm
包。在您的情况下,它应该类似于 npx nodemon server.js
。
关于node.js - npm 包在本地安装时不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571466/