TSC で型定義ファイルが生成されない
typescript
投稿日: 2024/07/28
npm packageを作ろうとしていてちょっとはまったのでメモ
以下のようなコマンドでビルド後に型定義ファイルを生成するようにしていた。
package.json
"scripts": { "build": "vite build && tsc",
この時、型定義ファイルが生成されたりされなかったりしてちょっと困ってました。
生成のされ方もソースコードや設定を更新したときだけ型定義ファイルが出力されるので、変更した設定が有効だったのかと勘違いして余計に時間がかかってしまいました。。
挙動的に変更後2回目のtscコマンド実行時に型定義ファイルが生成されないので、キャッシュとかコンパイル時に最適化されてるとこが怪しいなと。
そして設定を見直すとtsBuildInfoFile
の設定が入ってました。
incremental
オプションをtrueにしたときtsconfig.tsbuildinfo
ファイルの保存場所をしているする設定です。
この設定があると変更があったファイルのみ再コンパイルされるのでコンパイルが高速になる。
しかし、今回のようにvite build
コマンドと併用するとvite build
コマンドがビルドファイルや型定義ファイルを削除してしまうので、差分のみコンパイルすると型定義ファイルが足りなくなります。
これが型定義ファイルが生成されてないように見える正体でした。
このあたりのIssueを見ていて気付きました。
結論
tsconfig.json
{ "compilerOptions": { - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + // "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",