LoginSignup
5
1

More than 1 year has passed since last update.

【TypeScript】tsconfig.jsonで出力先を設定したのに反映されないあなたへ

Last updated at Posted at 2021-10-05

TypeScriptに入門した際に、tsファイルのコンパイル後の出力先を設定したはずなのに、想定通り出力されないということがありました。
初学者の中には、同じつまづきをされる方もいるかもしれないので共有します。

安心してください。設定は間違っていないのだから(多分)

今回は、tsconfig.jsonで「出力先」を設定した想定です。
こんな風に記述しているのではないでしょうか?

tsconfig.json
{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es2015",
    "outDir": "./dist",
    "sourceMap": true,
    "strict": true
  },
  "include": [
    "src"
 ],
}

今回問題となる出力先に関する記述は、"outDir": "./dist"の部分。
この場合、出力先はtsconfig.jsonと同じ階層にあるであろうdistディレクトリになるはです。

各ファイルの位置関係は下記のとおりです。

┃
┣━ node_modules/
┣━ dist/ # 出力先
┣━ src/
┃     ┗━ index.ts
┣━ tsconfig.json
┣━ package-lock.json
┗━ package.json

それでは、Typescriptを初めて書いたindex.tsをいざコンパイル。

bash
$ npx tsc ./src/index.ts

???
スクリーンショット 2021-10-05 23.45.44.png
index.jsよ、なぜ、そこにいるのか...(もちろん、distディレクトリの中は空です。)

結論 ファイル名を指定しなければよい

結論を言うと、「ファイル名」を指定しないで下記の用にコマンドを実行するだけで解決します。

bash
$ npx tsc

これをやりたかったんだよ。
スクリーンショット 2021-10-05 23.50.45.png

なぜか

公式ドキュメントのWhat is a tsconfig.jsonにこのように書いてあります。

When input files are specified on the command line, tsconfig.json files are ignored.
訳) コマンドラインで入力ファイルを指定すると、tsconfig.jsonは無視されます。

ということで、良かれと思ってファイル名を指定してコンパイルしていたがために、出力先を指定したのに反映されていないという憂き目にあっていました。

たったこれだけのことでしたが、20分くらい悩んでっしまったので、同じ問題に直面している人が早い段階でここにたどり着いてくれることを祈ります。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1