webpack React/TypeScript组件库-实现子路径导入?

r3i60tvu  于 2023-04-12  发布在  Webpack
关注(0)|答案(1)|浏览(135)

我创建了一个组件库(React,TypeScript和Webpack),它的结构如下所示:

- src
  - ui-components
      - ComponentA
      - ComponentB
      - index.ts
  - plugins
      - PluginA
      - PluginB
      - index.ts
  - index.ts

src/index.ts看起来像这样:

export * from './ui-components';
export * from './plugins';

src/ui-components/index.ts看起来像这样:

export * from './ComponentA';
export * from './ComponentB';

src/plugins/index.ts看起来像这样:

export * from './PluginA';
export * from './PluginB';

我的package.json看起来像这样:

"main": "dist/index.js",
  "module": "dist/index.js",
  "typings": "dist/index.d.ts",
  "files": [
    "dist/**"
  ],
  "exports": {
    "./ui-components": {
        "import": "./dist/ui-components/index.d.ts"
    },
    "./plugins": {
      "import": "./dist/plugins/index.d.ts"
  }

然而,当我将这个库导入到一个新项目时,我似乎可以导入ui组件和插件的唯一方法是:

import { ComponentA } from 'myLibrary';

或:

import { ComponentA } from 'myLibrary/dist/ui-components

我怎样才能让我的库导入为:

import { ComponentA } from 'myLibrary/ui-components'
import { PluginA } from 'myLibrary/plugins'

wlwcrazw

wlwcrazw1#

我假设你已经安装了typescript,在list目录下输出js文件。这就是为什么你必须从myLibrary/dist/ui-components导入。
有两种方法可以解决这个问题。

  • 设置typescript输出到包根目录。这样就不会有一个临时的dist目录。你将能够直接从ui-components目录导入。
  • 在你的包的package.json文件中添加一个导出Map,将ui-components指向dist/ui-components/index.js文件。你可以在这里阅读更多关于导出Map的信息。

相关问题