Noh | エンジニア向け情報共有コミュニティ
Signup / Login

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",
yosi

Noh を作ってるエンジニア。

目次