创建一个全局可访问的node.js模块

时间:2013-03-09 11:32:13

标签: node.js module global

我想创建一个全局可访问的node.js模块,例如expressmocha

所以我深入研究了他们的源代码,并创建了以下简短的例子:

index.js 文件,位于 hello / 目录中:

#!/usr/bin/env node

console.log("Hello world!")

正如你所看到的,测试这个概念只是一个“你好世界”。

以下是位于同一 hello / 目录中的 package.json 文件:

{
  "name": "Hello",
  "version": "0.0.1",
  "main": "./index",
  "bin": {
    "hello": "./bin/hello"
  }
}

然后,我尝试使用以下 npm 安装节点应用程序:

sudo npm install -g hello/

但这会返回错误:

npm ERR! Error: ENOENT, chmod '/usr/local/lib/node_modules/Hello/bin/hello'

我不知道出了什么问题,因为我尊重模块结构,就像我在expressmocha上找到的一样。你可以通过以下方式向我提供帮助:

  • 指出我案例中的错误
  • 链接到有关创建可执行节点模块的有用的tuts和资源

感谢。

1 个答案:

答案 0 :(得分:0)

您正在尝试安装目录。

如果您想在本地为您安装模块,只需将其复制到/usr/local/lib/node_modules/npm/node_modules/

但是,如果您希望npm安装(共享),则必须创建一个包。

npm login
npm publish
npm install -g hello

如果你害羞,npm unpublish会删除它。