どうも、sakitoです。
いまだにawesome-typescript-loaderを使用している人をちらほら見かけるので、その人たちへもう使わないほうがいいという説明の投稿です。
* この記事ではTypeScriptのドキュメントに合わせトランスパイルの言葉は使用せず、コンパイルに統一しています。
awesome-typescript-loaderはもう使わない
早速なのですが、awesome-typescript-loaderはもう使用しない方が良いです。
簡単な理由としては、awesome-typescript-loaderのGitHubを見ると分かるのですが、更新が3~5ヶ月程止まっているからです。
webpackやTypeScriptの更新にもう追いついていません。
IssueではTypescript 2.9-rcで動かない報告やwebpack 4 supportの報告があり、今だに閉じられていません。
実際に私の環境ではTypeScript v3.2のコンパイルができず、エラーで止まってしまいました。
webpack v4のバージョンにあげるとコンパイル速度が著しく悪くなったと言う報告も複数上がっています。
おまけに作者の返答もありません。
TypeScript公式のReact&webpackのhandbookに記載があるが?
現在多くの人が目にするTypeScript公式のReact&webpackのhandbookでは、awesome-typescript-loaderが推奨されており、ここを目にした人がawesome-typescript-loaderを使用していると思います。
しかし、現在handbookのPRにawesome-typescript-loaderからts-loaderに置き換える修正が出ています~~(紛らわしいので早くマージされてほしい)。~~
- 2019/8/16 こちらマージされました!handbookの活動が再開したようです!
更新されなくなったのはなぜなのか推測
もともとawesome-typescript-loaderは作者が、ts-loaderを高速化する目的に開発をしたものだと記載があります。
ここからは推測なのですが、ts-loaderが改良を重ね、様々な手法を用いることでコンパイル速度が早くなり、awesome-typescript-loaderよりもコンパイル速度が上がり、不要になったのでメンテが止まったのかもしれません。
最後に
awesome-typescript-loaderをいまだに使用している人は、コンパイルがとても遅いと思います。
現在webpack v4でawesome-typescript-loaderを使用している方は、別の方法に変更するだけで、コンパイル速度があがる可能性もあります。
いずれにしろ、今後TypeScriptやwebpackのバージョンがあがるとバグに突き当たるので、awesome-typescript-loaderを使用するのは控えましょう。
awesome-typescript-loaderを使用しているPJにこの投稿を見せれば移行を説得する材料になるかと思います。ぜひ使ってください。
次はts-loaderと@babel/preset-typescriptについて書こうと思います。