javascript 导入节点包中的文件,但不包括dist文件夹名称

0dxa2lsx  于 2023-02-02  发布在  Java
关注(0)|答案(2)|浏览(102)

我有一个库,将由其他节点的JS项目导入以下目录结构。

my-lib/
├─ dist/
│  ├─ index.js
│  ├─ foo.js
├─ src/
│  ├─ index.ts
│  ├─ foo.ts
├─ package.json

我有以下package.json

{
  "name": "my-lib",
  "version": "1.0.0",
  "description": "",
  "main": "dist/index.js"
}

我已经将main指定为dist/index.js,所以如果我理解正确的话,从index.ts导出的成员(js)可以导入为import abc from 'my-lib'。如果我必须从foo.ts访问导出的成员(js)文件,那么我可能会结束做import foo from 'my-lib/dist/foo'。所以在这里我必须指定dist文件夹名称在导入路径。有没有办法只指定'my-lib/foo'而忽略dist文件夹名称?(就像导入dist/index.js文件一样。)

5hcedyr0

5hcedyr01#

这可以通过package.json中的子路径导出来实现。

"main": "./dist/index.js",
  "exports": {
    ".": "./dist/index.js",
    "./foo": "./dist/foo.js"
  }
enyaitl3

enyaitl32#

正如node.js文档中所解释的,可以添加子路径导出。
在您的情况下,它应类似于以下内容

{
  "name": "my-lib",
  "version": "1.0.0",
  "description": "",
  "main": "./dist/index.js",
  "exports": {
    ".": "./dist/index.js",
    "./foo": "./dist/foo.js"
  }
}

这样导出后,您可以按如下方式导入

import foo from 'my-lib/foo'

相关问题