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

我正在实现一个Node模块,我希望用户可以select性地require某些文件是模块的一部分。 例如 :

 var M = require('my-module'); var Foo = require('my-module/foo'); 

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

 ./my-module +- lib | +- foo | | +- index.js | +- index.js +- package.json 

这是基本的package.json文件:

 { "name": "my-module", "version": "0.0.1", "description": "My very own super fun module.", "main": "lib/index.js" } 

注意 :为清楚起见,省略了不必要的键,例如: dependencieskeywordsauthor等。

如何修改package.json来允许这个“function”?

改变你的模块结构:

 ./my-module +- lib | +- foo | | +- index.js | +- index.js +- index.js +- foo.js +- package.json 

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

在package.json中设置main是一个错误的事情(因为package.json是npm自己的元数据,不应该和node.js有任何关系,想想从bower安装包),所以你不应该无论如何都要使用它。