generated at
ts-mochaのざっくりとしたしくみ
ts-mochaのざっくりとしたしくみ
ts-mocha を叩いただけでどうしてtypescriptコードのままテストができるのか?

ts-mocha コマンドのエントリポイント/bin/ts-mocha(javascriptコード)にあり!
(1) package.jsonをのぞいてみるとbinにこのファイルが設定されていた。
つまり、ts-mochaというコマンドを打つと、 /bin/ts-mohca というコマンドが実行されることになる。
(2) /bin/ts-mochaの上部には、node.jsShebangがついている。
つまり、このファイルをコマンドとして叩けば、ファイルの内容をnode.jsのコードとして実行してくれるということ。

/bin/ts-mocha の中で呼び出しているコマンドは簡略化して表記すると、
mocha --require /src/index.js ...(ts-mochaに渡した他のパラメタ)
ここでは、 / プロジェクトディレクトリを表している。
--require とは何か?
テストを実行する前に、渡されたファイルモジュールとしてimport(require)する。
中に書いてあるコードもしっかり実行される。

/src/index.js では ts-node を呼び出し、typescriptコードを実行している。
--require を通して環境変数として渡される以下のパラメタをもとに、 ts-node を実行する
projectへのパス
transpileOnly: コンパイルだけするか否か(?)のフラグ
さらに、以下のコードがその中にあった(抜粋)
ts
require('ts-node').register({ project, transpileOnly, });
> Create a new TypeScript compiler instance and register it onto node.js
この文におけるregisterがよくわかってない
おそらくどこかのタイミングで実行されるのだと考えられる...?
このコードによってコンパイルが実行されている。
ts-node/register と似た作用を持ってる...?

まとめ
内部で mocha を起動し、そのrequireオプションts-nodeを実行するスクリプトを結びつけている。
重要なオプション引数以外はそのまま渡している。

メモ書き
> Only CommonJS modules are supported. Use --import to preload an ECMAScript module.