Node.js(npm)访问已安装模块内的文件

Yan*_*hon 8 node.js npm

我正在实现一个Node模块,我希望用户可以选择将require某些文件作为模块的一部分.例如 :

var M = require('my-module');
var Foo = require('my-module/foo');
Run Code Online (Sandbox Code Playgroud)

考虑到我的模块结构是这样的:

./my-module
  +- lib
  |  +- foo
  |  |  +- index.js
  |  +- index.js
  +- package.json
Run Code Online (Sandbox Code Playgroud)

这是基本package.json文件:

{
  "name": "my-module",
  "version": "0.0.1",
  "description": "My very own super fun module.",
  "main": "lib/index.js"
}
Run Code Online (Sandbox Code Playgroud)

:不必要的按键是为清楚起见,省略,例如:dependencies,keywords,author等.

如何package.json修改以允许这个"功能"?

ale*_*lex 4

将模块结构更改为:

./my-module
  +- lib
  |  +- foo
  |  |  +- index.js
  |  +- index.js
  +- index.js
  +- foo.js
  +- package.json
Run Code Online (Sandbox Code Playgroud)

或者更好的是,像大多数模块一样进行require('my-module/foo')更改。require('my-module').Foo

在 package.json 中设置main是错误的(因为 package.json 是 npm 自己的元数据,不应该与 node.js 有任何关系,例如考虑从 Bower 安装包),所以你不应该无论如何使用它。