Bir monorepo'da TypeScript proje referanslarını kullanarak cjs ve esm oluşturma


CJS, yarn workspaces ve artımlı derlemeler kullanarak proje referanslarına sahip bir TypeScript monorepo prototip kurulumum var ve çalışıyor:

https://github.com/rosskevin/learn-a/tree/build-cjs-esm

Her proje için varsayılan tsconfig.json dosyasını kullandığı ve bunlar cjs için ayarlandığı için, komut satırı üzerinden geçersiz kılmaları basitçe iletmek istiyorum:

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.

Typescript proje referansları olan bir proje için hem cjs hem de esm yapısını elde etmenin en iyi yolu nedir?

Cevap #1

Her iki hedef için de (mümkün olduğunda artımlı kullanarak) yapı oluşturmanın tek yolu, cjs için artımlı çalıştırmak tsc -b ve diğer projelerin her biri için artımsız (görünüşe göre) çalıştırmaktır.

Bu şu anda çalışıyor:

"build": "tsc -b",
"build:esm": "lerna exec --stream --parallel -- ../../node_modules/.bin/tsc --outDir lib/esm --module esnext --target esnext",

İşte prototip depo:

https://github.com/rosskevin/learn-a

Cevap #2

https://www.typescriptlang.org/docs/handbook/compiler-options.html adresinde

-b --build

Bu projeyi ve Proje Referansları ile belirtilen tüm bağımlılıklarını inşa eder. Bu bayrağın bu sayfadaki diğer bayraklarla uyumlu olmadığını unutmayın. Daha fazla bilgi için buraya bakın https://www.typescriptlang.org/docs/handbook/project-references.html