TypeScriptプロジェクトを新たに始める際、毎回一から環境を構築するのは面倒なものです。
そこで、テンプレートリポジトリをつくってGitHubのTS TemplatesというOrganizationで公開することにしました。
TS Templatesのテンプレートリポジトリ
TS Templatesでは、実行環境ごとに最適化されたいくつかのテンプレートリポジトリを公開しています。
今のところは、Node.jsのLTSバージョン向けに4つのリポジトリがあります。
これらの違いはほぼNode.jsのバージョンのみですが、一部のライブラリは古いNode.jsバージョンのサポートを終了しているため、古いバージョンのままになっていたりします。
たとえば、ESLintはv8.0.0でNode.js v10/v13/v15のサポートを終了したので、ts-templates/node10ではv7のままです。1
TS Templatesの特徴
READMEにも記載していますが、TS Templatesには以下のような特徴があります。
-
ESLint + JavaScript Standard Style
- pre-commitフックで実行(huskyとlint-stagedによる)
- プルリクエストで実行(GitHub Actionsによる)
-
Jestによるテスト
- プルリクエストで実行(GitHub Actionsによる)
- Node.jsのバージョンをnvmで管理
- 依存パッケージのバージョンをRenovateで管理
初めて見る人でもプロジェクト構成を把握しやすいように、各種設定はなるべくシンプルに留めています。
それもあって、TSConfigではTSConfig Basesを使っています。
TS Templatesの課題
GitHubのテンプレートリポジトリではリポジトリの内容がそのまま使われるので、動的にファイルを生成するようなことはできません。
これでは、パッケージマネージャーとしてnpmではなくYarnを使いたかったり、テストフレームワークとしてJestではなくMochaを使いたいといったユースケースに対応できません。
また、GitHubにリポジトリをつくらなければならないという制約が、ちょっと試してみたいユーザーにとっては障壁となりえます。
したがって、create-nuxt-appのように対話式で選んだ構成のプロジェクトを生成できるようなCLIツールをつくるのが目下の課題です。2