我的 NPM CLI 包可以在 CMD 上执行而无需全局安装吗?

Tha*_*cky 5 javascript node.js npm package-development npx

我编写了一个 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": {
........
Run Code Online (Sandbox Code Playgroud)

Kyl*_*hin 4

这是 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"

祝你好运!让我知道如何帮助您!

  • 嗨,塔林杜!我知道已经过去很长时间了,但我刚刚发现了一些东西。您可以运行命令行包,而无需全局安装。还有2种方法。首先,安装“npm install -g npx”,然后运行节点模块中的“npx <command>”。那将尝试运行它。另一种方法是在 package.json 中运行脚本,只需像“http-server”一样引用它,不需要全局标志。祝你好运! (3认同)