使用Webpack在JS中使用TypeScript模块结构

Lui*_*lar 8 typescript webpack

我正在尝试使用webpack发布一个TypeScript库,其文件夹结构如下:

src/
    module1/
        some-class.ts
        index.ts
    module2/
        some-other-class.ts
        index.ts
    etc/
Run Code Online (Sandbox Code Playgroud)

如果在TS中使用,我应该能够做到:

import { SomeClass } from 'my-library/module1';
Run Code Online (Sandbox Code Playgroud)

而当使用require时,应该可以做到:

const SomeClass = require('my-library/module1');
Run Code Online (Sandbox Code Playgroud)

Webpack需要一个条目(或多个条目)和匹配这些条目的文件.但是,我看到为每个嵌套文件夹定义条目非常不切实际,也不知道如何制作深层嵌套条目require('my-library/module1/submodule1/etc').

另外,通过这种方式编写,它可能不会遵循由...输出的dts文件ts-loader.

我在这里错过了什么?有没有办法让webpack复制TS源的模块结构?

我使用错误的工具吗?

如果是这样,人们用什么来捆绑图书馆?

Nic*_*ert 2

我认为您可以在顶级 src/ 目录中创建一个 index.ts 文件并从那里导出每个子文件夹,例如export * from 'module1';

当您创建新模块时,您只需添加新行即可导出正确的目录。

附带说明一下,如果您想从顶层导出实际上位于模块内部较深处的内容,您可以使用以下语法export { myFunc } from './module1/nested/myFunc';

require('myLibrary/myFunc')在这种情况下,您可以使用require('myLibrary/module1/nested/myFunc')

编辑:正如@Dehli所指出的,这些索引文件被称为Barrels(https://basarat.gitbooks.io/typescript/docs/tips/barrel.html