npm指定package-name / module-name指向的位置

时间:2013-11-05 21:51:05

标签: node.js npm

考虑以下文件夹结构:

- lib
  + main.js
  + optional.js
- src
  + main.coffee
  + optional.coffee
+ package.json

我可以在package.json中指定主文件没问题:

  "main": "./lib/main",

但是当我require('package-name/optional')时,我需要./lib/optional。如何指定/使其有效?

2 个答案:

答案 0 :(得分:1)

这是不可能的,因为模块名称被解析为所需脚本的路径。

您可以指定main选项的原因是因为package-name解析为node_modules/package-name(可以找到package.json),而package-name/option将解析为node_modules/package-name/option {1}}这是一条完全不同的道路。

如果您想了解如何解析模块路径,可以查看节点源here。导致路径解析的函数顺序如下所示:

Module.prototype.require
Module._load
Module._resolveFilename
Module._resolveLookupPaths

答案 1 :(得分:0)

您可以在包名称下指定文件/文件夹,但正如hexacyanide所指出的那样,无法为该特定文件指定自定义要求选项。例如:

require('package-name/lib/optional')