0

考虑以下文件夹结构:

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

package.json我可以毫无问题地指定主文件:

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

但是当require('package-name/optional')我想要的时候./lib/optional。我怎样才能指定/使它工作?

4

2 回答 2

1

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

您可以指定main选项的原因是因为package-name解析到node_modules/package-name(在哪里package.json可以找到),而package-name/option将解析到node_modules/package-name/option完全不同的路径。

如果您想了解模块路径是如何解析的,您可以在此处查看 Node 源代码。导致路径解析的函数顺序如下所示:

Module.prototype.require
Module._load
Module._resolveFilename
Module._resolveLookupPaths
于 2013-11-05T23:33:06.967 回答
0

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

require('package-name/lib/optional')
于 2013-11-05T23:43:41.690 回答