ウェブサイト検索

モノレポで TypeScript プロジェクト参照を使用して cjs と esm をビルドする


私は、増分ビルドを使用した CJS、Yarn ワークスペース、プロジェクト参照を備えた TypeScript モノレポのプロトタイプをセットアップして実行しています:

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

各プロジェクトで tsc -b がデフォルトの tsconfig.json を使用し、cjs 用に設定されているため、コマンドライン経由で単純にオーバーライドを渡したいです:

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のプロジェクト参照プロジェクトに対して、CJSとESMの両方のビルドを取得する最良の方法は何ですか?

回答 #1

両方のターゲットのためにビルドする唯一の方法(可能な場合はインクリメンタルを使用する) は、cjs の場合はインクリメンタルを実行し tsc -b、その他の各プロジェクトについては非インクリメンタル(と思われる)を実行することです。

これは現在動作しています:

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

こちらがプロトタイプのリポジトリです:

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

回答 #2

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

-b --ビルド

このプロジェクトと、プロジェクト参照によって指定されたすべての依存関係をビルドします。このフラグは、このページの他のフラグと互換性がないことに注意してください。詳細はこちらをご覧ください https://www.typescriptlang.org/docs/handbook/project-references.html