我的前端库的代码分为几个源文件。

例子:

// a.ts
function a() {}

// b.ts
function b() {}

// main.ts
const myLib = {
    a: a,
    b: b
}

我需要构建一个仅导出myLib的ES6模块(即一个JavaScript文件)作为默认导出。

我看到两个选择。第一个:
  • 运行tsc将每个文件编译为JavaScript;
  • 将所有生成的JS文件连接为一个文件my-lib.js
  • 附加ES6所需的代码(export …)。

  • 第二个:
  • 将所有TypeScript文件连接到一个文件my-lib.ts中;
  • 附加导出:export default myLib;
  • 在连接的文件上运行tsc

  • 这两个选项都很丑陋,并且失去了map文件。

    有没有更好的方法可以做到这一点?

    最佳答案

    正确的方法是创建一个将重新导出模块的桶文件。

    // foo/a.ts
    export function a() {}
    
    // foo/b.ts
    export function b() {}
    
    // foo/index.ts
    export {a} from './a';
    export {b} from './b';
    

    然后在您的消费者中:
    import {a, b} from './foo';
    
    a();
    b();
    

    10-07 18:10