全局安装本地开发的npm包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局安装本地开发的npm包相关的知识,希望对你有一定的参考价值。

我正在开发一个需要从shell运行的节点包。我知道我必须全局安装软件包,但正在运行

$> npm install -g ./my_module

没有给我想要的结果,那就是正在运行

$> my_module

结果是

my_module: : command not found

而不是运行我的节点包的入口点(index.js)。

我觉得我在这里遗漏了一些明显的东西,我做错了什么?

答案

请尝试打包模块并安装。

npm pack

然后全局安装它

npm i -g my_module-0.0.1.tgz

让我知道这是否有效

另一答案

我最近遇到了同样的问题。我将我的模块开发为CLI,目的是能够从任何地方调用它,将其发布到MPM注册表并使用-g选项安装它,但是当从命令行调用它时,我仍然得到command not found错误。将bin属性添加到package.json文件就是诀窍。

来自NPM documentation

很多软件包都有一个或多个可以安装到PATH中的可执行文件。 npm使这很简单(事实上,它使用此功能来安装“npm”可执行文件。)

要使用它,请在package.json中提供bin字段,该字段是命令名称到本地文件名的映射。在安装时,npm会将该文件符号链接到prefix/bin以进行全局安装,或者将./node_modules/.bin/用于本地安装。

这意味着您的package.json文件应如下所示:

{
    "name": "foo-cli",
    "version": "1.0.0",
    "description": "A CLI to do Foo-ish things.",
    "bin": {
        "foo": "./cli.js"
    },
    "main": "main.js",
    ...
}

如果您只希望指定一个命令,则该属性可以是单个字符串;如果您希望指定多个命令,则该属性可以是地图。现在你应该能够从命令行的任何地方调用foo

以上是关于全局安装本地开发的npm包的主要内容,如果未能解决你的问题,请参考以下文章

nodejs npm install全局安装和本地安装的区别

nodejs npm install全局安装和本地安装的区别

分清全局安装与本地安装

npm中全局安装和本地安装的区别

npm(cnpm)全局安装和本地安装的区别

npm学习之如何安装全局包更新全局安装的包卸载全局安装的包