节点如何解析require('my-module/subpath')
和import * from 'my-module/subpath'
?
这总是会解析为my-module中的subpath.js
或subpath/index.js
,还是会在其他地方找到?
是否可以配置my-module
以便require('my-module/subpath')
或import * from 'my-module/subpath'
解析为lib\subpath\index.js
?
答案 0 :(得分:0)
节点如何解析require('my-module / subpath')并从'my-module / subpath'导入*?
无论使用require
还是import
,my-module/subpath
都将解析为node_modules/my-module/subpath
它将在其中搜索:
subpath.js
package.json
及其main
字段(对于commonjs)或module
(对于esm)。 index.js
。有关全面(尽管很长)的指南,请参见typescript documentation中的node resolution
部分。
注意:大多数软件包不是以my-module/subpath
格式分发,而是使用main
中的module
或package.json
。 Material-ui是一个例外,它对esm导出是这样做的(请参阅guide)。
是否可以配置my-module,以便require('my-module / subpath')或从*'my-module / subpath'导入*解析为lib \ subpath \ index.js?
几乎所有相关工具都提供了一种通过别名更改模块分辨率的方法。如何实现该目标取决于您使用的工具:
babel-plugin-module-resolver
)resolve.alias
属性)paths
中称为tsconfig
的地方)eslint-plugin-import
等