Javascript 具有多个子模块的typescript项目

Javascript 具有多个子模块的typescript项目,javascript,typescript,webpack,ecmascript-6,Javascript,Typescript,Webpack,Ecmascript 6,我有一个项目,目标非常简单,将其公开为包含类型化定义的库 事实上,这个项目在没有它的情况下可以编译并运行良好,typescript编译器也可以导出所有定义 为了理解我的问题,让我介绍一下这个项目的一小部分,让事情变得更简单 项目结构 通常,类别中的所有package.json文件如下所示: { "name": "category-or-component-name", "version": "0", "main": "CategoryOrComponent.ts", "types

我有一个项目,目标非常简单,将其公开为包含类型化定义的库

事实上,这个项目在没有它的情况下可以编译并运行良好,typescript编译器也可以导出所有定义

为了理解我的问题,让我介绍一下这个项目的一小部分,让事情变得更简单

项目结构 通常,类别中的所有
package.json
文件如下所示:

{
  "name": "category-or-component-name",
  "version": "0",
  "main": "CategoryOrComponent.ts",
  "types": "CategoryOrComponent.ts"
}
export { default as Button } from './Button'
export { default as Toast } from './Toast'
import Button from './Elements/Button'
类别 在
src
中,有一些组件的“类别”,每个类别承载一个
package.json
、一个
{CategoryName}.ts
文件和一个组件列表

类别实现,如下所示:

{
  "name": "category-or-component-name",
  "version": "0",
  "main": "CategoryOrComponent.ts",
  "types": "CategoryOrComponent.ts"
}
export { default as Button } from './Button'
export { default as Toast } from './Toast'
import Button from './Elements/Button'
组件 这里没有太多秘密,每个组件在
component.tsx
上都有正确的实现,每个组件文件夹中的
package.json
文件几乎与在类别中创建的
package.json
文件相同

以下是组件的示例:

import * as React from 'react'

export interface Props {
  children?: string | JSX.Element;
}

export default class Button extends React.PureComponent<Props, {}> {
  public render (): JSX.Element {
    const { children } = this.props
    return (
      <button>{children}</button>
    )
  }
}
定义 类别和组件中的定义永远不会加载,因为
.d.ts
文件并不指向
.d.ts
文件,而是指向文件夹

让我们看一个定义示例:

export interface Props {
  children?: string | JSX.Element;
}

export default class Button extends React.Component<Props, {}> {
  static defaultProps: Partial<Props>;
  private handleOnClick;
  private handleOnMouseOver;
  private handleOnMouseOut;
  private handleOnTouchStart;
  private handleOnTouchEnd;
  render(): JSX.Element;
}
这意味着该库的使用者将永远找不到
Button.d.ts
文件,因为其中没有
package.json

At
src
工作,因为每个文件夹都有一个
package.json
文件。这里的
package.json
文件的职责是向节点和typescript指出谁是索引文件,就像这样简单

所以我的问题是,
tsc
中有一些功能可以捆绑,或者可以提高模块分辨率

谢谢