TypeScriptに入門した際に、tsファイルのコンパイル後の出力先を設定したはずなのに、想定通り出力されないということがありました。
初学者の中には、同じつまづきをされる方もいるかもしれないので共有します。
安心してください。設定は間違っていないのだから(多分)
今回は、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をいざコンパイル。
$ npx tsc ./src/index.ts
???
index.jsよ、なぜ、そこにいるのか...(もちろん、distディレクトリの中は空です。)
結論 ファイル名を指定しなければよい
結論を言うと、「ファイル名」を指定しないで下記の用にコマンドを実行するだけで解決します。
$ npx tsc
なぜか
公式ドキュメントのWhat is a tsconfig.jsonにこのように書いてあります。
When input files are specified on the command line, tsconfig.json files are ignored.
訳) コマンドラインで入力ファイルを指定すると、tsconfig.jsonは無視されます。
ということで、良かれと思ってファイル名を指定してコンパイルしていたがために、出力先を指定したのに反映されていないという憂き目にあっていました。
たったこれだけのことでしたが、20分くらい悩んでっしまったので、同じ問題に直面している人が早い段階でここにたどり着いてくれることを祈ります。