47 lines
3.1 KiB
JSON
47 lines
3.1 KiB
JSON
{
|
|
// 型検査専用の設定 (#1001)。
|
|
//
|
|
// 検査範囲は「UI の TypeScript 全部」——src に加えて E2E 仕様と、ui/ 直下の
|
|
// playwright / vite の設定ファイル。
|
|
//
|
|
// ビルド用 (tsconfig.json) と分けてある理由: build は Dockerfile の
|
|
// `npm run build:ui` から呼ばれる**製品ビルド**の経路にある。そこに E2E を
|
|
// 混ぜると、製品イメージのビルドが @playwright/test や better-sqlite3 と
|
|
// いった devDependency に依存する。`npm ci --omit=dev` を足す、COPY の順を
|
|
// 入れ替える——そういう普通の変更が、テストではなく製品ビルドを壊すように
|
|
// なってしまう。検査の網は広く、ビルドの依存は狭く。
|
|
"extends": "./tsconfig.json",
|
|
"compilerOptions": {
|
|
// Node の型を明示で戻す (#1316)。
|
|
//
|
|
// 引き継ぎ元 (tsconfig.json) は types: [] で親ディレクトリの型定義を断って
|
|
// いる。あちらは出荷物だけを見る設定なので断てるが、こちらの検査対象には
|
|
// Node の上で動くものが混ざる: ui/ 直下の vite.config.ts (__dirname) と
|
|
// playwright の設定 (process.env / process.execPath)、e2e 一式、そして src の
|
|
// テスト (node:fs / node:path / global)。断ったままだと、これらが落ちる。
|
|
//
|
|
// ここは「取り込む型定義を選んで名指しする」のであって、自動取り込みには
|
|
// 戻さない。名指しなので、増えるのは node 1 つだけ。参照先を ui 自身の
|
|
// node_modules に固定するため、@types/node は ui/package.json の
|
|
// devDependencies に入れてある (版は直下と同じ ^20.11.30)。
|
|
//
|
|
// 版をそろえる意味は #1314 のときとは変わっている。#1314 で踏んだ「直下が 20 の
|
|
// ままこちらだけ新しくなると出荷物が落ちる」形は、tsconfig.json が types: [] に
|
|
// なった時点で出荷物の側からは消えた。いま残る意味は、画面側の検査とサーバー側の
|
|
// Node の版をそろえておくこと。将来 Node を 22 に上げるとき、直下だけ上げた瞬間に
|
|
// scripts/ui-typecheck-gate.test.ts の版そろえの見張りが落ちる——意図した動作で、
|
|
// 「こちらも一緒に上げろ」の合図。
|
|
//
|
|
// なお、この設定は「ブラウザに無いものを止める関所」にはならない。e2e が
|
|
// better-sqlite3 を読み、その .d.ts の `/// <reference types="node" />` が
|
|
// Node の型をプログラム全体へ呼び戻すので、types をどう書いても src で
|
|
// Buffer が通る (--explainFiles で確認)。関所は tsconfig.json 側。
|
|
"types": ["node"],
|
|
"noEmit": true
|
|
},
|
|
"include": ["src", "e2e", "e2e-auth", "*.ts"],
|
|
// exclude は extends で引き継がれる。引き継ぎ元はテストを外しているので、
|
|
// ここで書き直さないと src のテストが黙って検査対象から外れる (#1316)。
|
|
"exclude": ["node_modules", "dist"]
|
|
}
|