javascript - 我的 NPM CLI 包可以在 CMD 上执行而无需全局安装吗?
问题描述
我写了一个 NPM 包,它有自己的 CLI 命令。
让我们将该包命名为xyz
并想象它现在可以在npmjs.com上使用
所以,假设用户通过运行在他的项目中安装这个包npm install xyz
。
现在他想xyz
在他的项目中的终端上运行 package 提供的 CLI 命令。
xyz do_this
这可以在不由用户全局安装此软件包的情况下完成吗?或者没有任何进一步的用户配置?
这是package.json
xyz 包的一部分。
{
"name": "xyz",
"version": "1.0.0",
"description": "Description",
"main": "index.js",
"preferGlobal": true,
"bin": "./index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
........
解决方案
这是 npm 的工作原理。当你在本地目录中安装一个包时,它会在 package.json 文件夹内的 node_modules 中安装可执行依赖文件,但如果你使用 --global,它会将其全局放置在用户设置路径的位置。例如,当我运行时npm install http-server
,我的可执行文件最终为,./node_modules/http-server/bin/http-server
但是当我全局安装它时,我将它作为node_modules/http-server/bin
解决这个问题的方法是,如果您只想运行可执行文件,只需像这样在内部执行它./node_modules/http-server/bin/http-server
。如果您希望它作为命令,您还需要让用户将目录添加到他们的路径中,以便当用户输入命令时,计算机会在该文件夹中查找命令。这是在 Linux 中添加 PATH 目录的指南,您只需添加目录/pathtofolder/node_modules/http-server/bin/
或您的文件夹。https://linuxize.com/post/how-to-add-directory-to-path-in-linux/
例如,如果我想将本地文件夹中的 http-server 添加到我的路径中,我会运行
export PATH="/pathtofolder/node_modules/http-server/bin/:$PATH"
祝你好运!让我知道我可以如何帮助你!
推荐阅读
- python-3.x - 我用 Python 写了一个不和谐的机器人。它不适用于 Glitch
- python - 如何使用 python 枕头为句子中的某些单词设置样式?
- macos - 在 Mac OS Catalina 上安装 Pentaho 数据集成(PDI、Kettle)时出错
- excel - 跨多个列的 Excel 总和索引匹配
- php - 关联表 MYSQL
- c# - 如何关闭所有匿名,运行Excel应用程序而不杀死
- python - 提取复选框区域中的数据
- spring-boot - Springboot JPA JPQL查询在多模块项目中不起作用
- firebase - firebase 使用电话号码获取用户 UID
- php - Laravel 7 部分模拟雄辩模型因 __construct() 而失败,但没有指定期望