Wyszukiwanie w witrynie

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