起因

学习某低代码平台代码,看packages中有个exports,指向了不同的js文件,疑惑为什么这么做

解惑

在通常情况下,我们会使用 main:“index.js” 指向单独指向一个所抛出的 exports

但是使用过 exports 后,会生成一个对应关系,抛出不同的模块,并消除替换了 mian 字段的默认行为 例如

 {
  "exports": {
    ".": "./main.js",
    "./core/test": "./test.js",
  }
}

// 使用时可以使用如此的对应关系 分模块去使用

// ".": "./main.js",
import test from 'package'

// "./core/test": "./test.js",
import test from 'package/core/test'

根据模块语法 引用不同的文件

"exports": {
    ".": {
      "import": "./lib/esm/index.mjs",
      "require": "./main.js"
    },
    "./core/test": "./test.js"
  }

后续疑问

exports 为抛出不同的模块,那么ts中的tsconfig 的paths 和 vite的 resolve.alias 区别是什么?