npm 包在本地安装时不可用
npm packages not available when installed locally
我在 Web 应用程序上使用 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目录中。如果您保存了一个包 locally
,您可以在 node_modules/.bin/
上看到它,就像您提到的那样。因此,如果你想 运行 一个可执行包,如果安装了 locally
:
,有两种方法可以实现你想要的
- 您可以 运行 通过终端
./node_modules/.bin/nodemon yourscript.js
或者通过 npm scripts
在你的 package.json
文件中,你这样做:
{
"scripts": {
"nodemon": "nodemon yourscript.js"
}
}
并执行npm run nodemon
.
第二种方法适用于全局或本地安装的包。
我更喜欢在本地安装包,这样我的其他应用程序就不会受到影响,尤其是当我为每个项目使用不同的包版本时。
更新
在 npm@5.2.0 onwards, it comes with a binary called npx。因此,您只需 npx [package]
就可以 运行 终端上的特定包,它会执行您的本地或全局 npm
包。在您的情况下,它应该类似于 npx nodemon server.js
.
这是因为本地 node_modules 文件夹不在您的 PATH 中。有关详细信息,请参阅重复问题的 link。
因为它在您的 node_modules/.bin 文件夹中,而不是您的 PATH。
您可以使用./node_modules/.bin/nodemon
或$(npm bin)/nodemon
来调用nodemon。
对于 运行 任何本地安装的 npm 模块(Mocha、Eslint、Nodemon 等),您现在可以使用 npx
。试试 npx nodemon server.js
.
我还建议在您的 package.json 中设置 main
以指向您想要 运行 的脚本(默认情况下 index.js),这样您就可以 运行 npx nodemon
或 nodemon
(如果全局安装),它会知道哪个脚本要 运行.
我在 Web 应用程序上使用 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目录中。如果您保存了一个包 locally
,您可以在 node_modules/.bin/
上看到它,就像您提到的那样。因此,如果你想 运行 一个可执行包,如果安装了 locally
:
- 您可以 运行 通过终端
./node_modules/.bin/nodemon yourscript.js
或者通过 npm
scripts
在你的package.json
文件中,你这样做:{ "scripts": { "nodemon": "nodemon yourscript.js" } }
并执行
npm run nodemon
.
第二种方法适用于全局或本地安装的包。
我更喜欢在本地安装包,这样我的其他应用程序就不会受到影响,尤其是当我为每个项目使用不同的包版本时。
更新
在 npm@5.2.0 onwards, it comes with a binary called npx。因此,您只需 npx [package]
就可以 运行 终端上的特定包,它会执行您的本地或全局 npm
包。在您的情况下,它应该类似于 npx nodemon server.js
.
这是因为本地 node_modules 文件夹不在您的 PATH 中。有关详细信息,请参阅重复问题的 link。
因为它在您的 node_modules/.bin 文件夹中,而不是您的 PATH。
您可以使用./node_modules/.bin/nodemon
或$(npm bin)/nodemon
来调用nodemon。
对于 运行 任何本地安装的 npm 模块(Mocha、Eslint、Nodemon 等),您现在可以使用 npx
。试试 npx nodemon server.js
.
我还建议在您的 package.json 中设置 main
以指向您想要 运行 的脚本(默认情况下 index.js),这样您就可以 运行 npx nodemon
或 nodemon
(如果全局安装),它会知道哪个脚本要 运行.