【问题标题】:Resolution for require('module/subpath')require('module/subpath') 的分辨率
【发布时间】:2018-07-02 11:05:00
【问题描述】:

node如何解析require('my-module/subpath')import * from 'my-module/subpath'

这总是会解析为 my-module 中的 subpath.jssubpath/index.js,还是会在其他地方查找?

是否可以配置my-module 使require('my-module/subpath')import * from 'my-module/subpath' 解析为lib\subpath\index.js

【问题讨论】:

    标签: node.js import require node-modules


    【解决方案1】:

    node如何解析require('my-module/subpath')和import * from 'my-module/subpath'?

    无论使用require还是importmy-module/subpath都会解析为node_modules/my-module/subpath

    它将在那里搜索:

    1. subpath.js
    2. package.json 及其 main 字段(用于 commonjs)或 module(用于 esm)。
    3. index.js

    有关全面(尽管很长)的指南,请参阅typescript documentation 中的node resolution 部分。

    注意: 大多数包不是以my-module/subpath 格式分发的,而是在package.json 中使用mainmoduleMaterial-ui 是一个例外,它用于 esm 导出(请参阅 guide)。

    是否可以配置 my-module 以便 require('my-module/subpath') 或 import * from 'my-module/subpath' 解析为 lib\subpath\index.js?

    几乎所有相关工具都提供了一种通过别名更改模块分辨率的方法。如何实现这一点取决于您使用的工具:

    • babel(来自babel-plugin-module-resolver
    • webpack(通过resolve.alias 属性)
    • typescript/VSCode(在 tsconfig 中称为 paths
    • eslint (来自eslint-plugin-import

    等等

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 2011-03-28
      • 2018-07-12
      • 2023-01-12
      相关资源
      最近更新 更多