4

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

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

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

#!/usr/bin/env node

console.log("Hello world!")

正如你所看到的,它只是一个“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 和资源

谢谢。

4

1 回答 1

0

您正在尝试安装该目录。

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

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

npm login
npm publish
npm install -g hello

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

于 2013-03-09T16:28:01.083 回答