tsconfig/bases 内の tsconfig.json を (自分が知りたい範囲で) 比較する
2023/3/1
Tech
tsconfig/bases?
コミュニティでメンテナンスされている 環境毎のおすすめ tsconfig、及びそのリポジトリ (tsconfig/bases) のこと。 雑多になりがちな tsconfig.json がスッキリするし、コミュニティで決めてくれたいい感じの設定に乗っかれて楽なので、私はよく使っています。
{
"extends": "なにか",
"compilerOptions": {
// ちょこっと
}
}
設定を比較してみる
前述の通り、tsconfig/bases には環境毎に tsconfig.json が提供されており、それらの具体的な差分が気になったのでメモしておく。
Node 16
and Node 16 + Strictest
(;'8')?! < % diff <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node16.json) <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node16-strictest.combined.json)
0a1,2
> // This file was autogenerated by a script
> // Equivalent to a config of: strictest extends node16
3,4c5
< "display": "Node 16",
<
---
> "display": "Node 16 + Strictest",
6c7,9
< "lib": ["es2021"],
---
> "lib": [
> "es2021"
> ],
9d11
<
14c16,28
< "moduleResolution": "node"
---
> "moduleResolution": "node",
> "allowUnusedLabels": false,
> "allowUnreachableCode": false,
> "exactOptionalPropertyTypes": true,
> "noFallthroughCasesInSwitch": true,
> "noImplicitOverride": true,
> "noImplicitReturns": true,
> "noPropertyAccessFromIndexSignature": true,
> "noUncheckedIndexedAccess": true,
> "noUnusedLocals": true,
> "noUnusedParameters": true,
> "importsNotUsedAsValues": "error",
> "checkJs": true
16c30
< }
---
> }
\ No newline at end of file
+ Strictest
とある通り、strictest 用の追加された設定のみが差分
Node 16 Strictest
and Node 16 + ESM + Strictest
(;'8')?! < % diff <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node16-strictest.combined.json) <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node16-strictest-esm.combined.json)
2c2
< // Equivalent to a config of: strictest extends node16
---
> // Equivalent to a config of: strictest extends esm extends node16
5c5
< "display": "Node 16 + Strictest",
---
> "display": "Node 16 + ESM + Strictest",
10c10
< "module": "commonjs",
---
> "module": "es2022",
+ ESM
とある通り、ESM 用の追加された設定のみが差分
Node 16 + ESM + Strictest
and Node 18 + ESM + Strictest
(;'8')?! < % diff <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node16-strictest-esm.combined.json) <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node18-strictest-esm.combined.json)
2c2
< // Equivalent to a config of: strictest extends esm extends node16
---
> // Equivalent to a config of: strictest extends esm extends node18
5c5
< "display": "Node 16 + ESM + Strictest",
---
> "display": "Node 18 + ESM + Strictest",
8c8
< "es2021"
---
> "es2022"
11c11
< "target": "es2021",
---
> "target": "es2022",
lib
, target
の差分のみ
Node 18 + ESM + Strictest
and Node LTS + ESM + Strictest
(;'8')?! < % diff <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node18-strictest-esm.combined.json) <(curl -s https://raw.githubusercontent.com/tsconfig/bases/main/bases/node-lts-strictest-esm.combined.json)
5c5,6
< "display": "Node 18 + ESM + Strictest",
---
> "display": "Node LTS + ESM + Strictest",
> "_version": "18.12.1",
今日時点の Node.js の LTS は v18 なので、Node LTS + ESM + Strictest
は Node 18 + ESM + Strictest
と同じ