4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TypeScriptAdvent Calendar 2021

Day 2

TypeScriptのテンプレートリポジトリ集(TS Templates)をつくった

Last updated at Posted at 2021-12-01

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フックで実行(huskylint-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

  1. https://github.com/ts-templates/node10/blob/master/.github/renovate.json

  2. https://github.com/orgs/ts-templates/projects/2#card-63436672

4
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
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?