📑

tsconfig.jsonの最終的な構成をtsconfckを使って確認する

2021/10/31に公開

typescriptのプロジェクトを触っていると、tsconfigが最終的にどのような構成になるか確認したい時があります。現状だと、typesciptのパッケージでは確認するためのAPIは用意されていません。

viteでは、tsconfck というプロジェクトを利用して最終的なtsconfig.jsonの最終的な構成を取得していましたので、触ってみます。
https://github.com/dominikg/tsconfck

以下のようなtsconfigファイルを用意して、jsから parseNative を実行する。

{
  "compilerOptions": {
    "target": "esnext",
    "module": "commonjs",
    "baseUrl": "src",
    "declaration": true,
    "outDir": "./dist/",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "skipLibCheck": true
  },
  "exclude": ["node_modules", "example/*", "dist/*"]
}
import { parseNative } from 'tsconfck';

export const main = async () => {
  const tsConfigFile= await parseNative('index.ts');
  console.log('tsConfigFile :>> ', tsConfigFile);
};

main();

最終的な構成ファイルをオブジェクトで取得できます。
typescriptのコードの以下で出力される結果と同様の結果を得ることができます。
https://github.com/microsoft/TypeScript/blob/95ef2a503dd0cae9f106948cccee8a041078a472/src/executeCommandLine/executeCommandLine.ts#L529

tsConfigFile :>>  {
  tsconfigFile: '/Users/j1ingzoue/projects/tsconfck/tsconfig.json',
  tsconfig: {
    compilerOptions: {
      target: 'latest',
      module: 'commonjs',
      baseUrl: '/Users/j1ingzoue/projects/tsconfck/src',
      declaration: true,
      outDir: '/Users/j1ingzoue/projects/tsconfck/dist',
      esModuleInterop: true,
      forceConsistentCasingInFileNames: true,
      strict: true,
      skipLibCheck: true
    },
    exclude: [ 'node_modules', 'example/*', 'dist/*' ]
  },
  result: {
    options: {
      target: 99,
      module: 1,
      baseUrl: '/Users/j1ingzoue/projects/tsconfck/src',
      declaration: true,
      outDir: '/Users/j1ingzoue/projects/tsconfck/dist',
      esModuleInterop: true,
      forceConsistentCasingInFileNames: true,
      strict: true,
      skipLibCheck: true,
      configFilePath: '/Users/j1ingzoue/projects/tsconfck/tsconfig.json'
    },
    watchOptions: undefined,
    fileNames: [ '/Users/j1ingzoue/projects/tsconfck/index.ts' ],
    projectReferences: undefined,
    typeAcquisition: { enable: false, include: [], exclude: [] },
    raw: {
      compilerOptions: [Object],
      exclude: [Array],
      compileOnSave: false
    },
    errors: [],
    wildcardDirectories: { '/users/j1ingzoue/projects/tsconfck': 1 },
    compileOnSave: false
  }
}

Discussion