javascript - Kompiler TypeScript-bibliotek til es2015- og CommonJs-moduler


Jeg har et delt React-komponentbibliotek kompilert med TypeScript. For øyeblikket kompilerer jeg biblioteket med CommonJs-moduler, men jeg ønsker også å ha ES2015-moduler tilgjengelig for å få Webpack tree shaking tilgjengelig i forbrukerprosjektet.

Bibliotekmappestrukturen ser slik ut:

Filen index.ts er der jeg har det offentlige API-et. Et eksempel ville være:

// Components
export { default as AlertBox } from './components/AlertBox/AlertBox';
export { default as Button } from './components/Button/Button';

Og jeg har denne TypeScript-konfigurasjonen (tsconfig.json):

{
  "compilerOptions": {
    "baseUrl": ".",
    "module": "commonjs",
    "moduleResolution": "node",
    "target": "es5",
    "noImplicitAny": false,
    "sourceMap": true,
    "outDir": "./dist",
    "jsx": "react",
    "allowSyntheticDefaultImports": true,
    "declaration": true,
    "paths": {
      "*": ["public/*", "src/*"]
    }
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.test.*"]
}

Jeg prøvde å gjøre noe sånt som dette:

tsc && tsc -m es6 --outDir lib-esm

Men dette kompilerer hele prosjektet til ES6-moduler, så jeg vil ende opp med all koden duplisert.

Det jeg prøver å oppnå er å ha kun 2 forskjellige index.ts (offentlig API). En med es6-moduler (index.es.ts) og den andre med CommonJs (index.ts). På en måte som material-ui gjør.

Er det en måte å få de filene kun med TypeScript?

Relaterte artikler