Budowanie cjs i esm za pomocą odniesień do projektów TypeScript w monorepo
Mam prototypowe ustawienie monorepo w TypeScript działające z cjs, workspace'ami yarn i odniesieniami do projektów używającymi kompilacji przyrostowej:
https://github.com/rosskevin/learn-a/tree/build-cjs-esm
Ponieważ tsc -b używa domyślnego tsconfig.json w każdym projekcie, a są one skonfigurowane dla cjs, chciałbym po prostu przekazać nadpisania przez wiersz poleceń:
yarn tsc -b --outDir lib/esm --module esnext --target esnext ✘ 127
yarn run v1.12.3
/Users/kross/projects/js/node_modules/.bin/tsc -b --outDir lib/esm --module esnext --target esnext
error TS5072: Unknown build option '--outDir'.
error TS5072: Unknown build option '--module'.
error TS5072: Unknown build option '--target'.
error Command failed with exit code 1.
Jaki jest najlepszy sposób, aby uzyskać zarówno kompilację CJS, jak i ESM dla projektu TypeScript używającego odniesień do innych projektów?
Odpowiedź #1
Jedynym sposobem na budowanie dla obu celów (używając przyrostowego tam, gdzie to możliwe) jest wykonywanie przyrostowych dla cjs tsc -b i nieprzyrostowych (wydaje się) dla każdego z pozostałych projektów.
To obecnie działa:
"build": "tsc -b",
"build:esm": "lerna exec --stream --parallel -- ../../node_modules/.bin/tsc --outDir lib/esm --module esnext --target esnext",
Oto repozytorium prototypu:
https://github.com/rosskevin/learn-a
Odpowiedź #2
Na https://www.typescriptlang.org/docs/handbook/compiler-options.html
-b --build
Buduje ten projekt oraz wszystkie jego zależności określone przez Odniesienia do Projektu. Zwróć uwagę, że ten przełącznik nie jest kompatybilny z innymi na tej stronie. Zobacz więcej tutaj https://www.typescriptlang.org/docs/handbook/project-references.html
