最近発見したGitHubのTemplate Repository機能の紹介です。
リンターやらテストライブラリの設定等は、ほぼどの環境でも行いますが毎回設定するのは地味に面倒ですよね。
GitHubのTemplate Repository機能を使えばその環境構築が不要で、本質的な開発をすぐに始められるようになります。
GitHubのTemplate Repositoryとは?
あるリポジトリのコードベースをそっくりそのまま新規のリポジトリ作成で利用できる機能です。
「え、それってforkと違うの?」っと思った方もいるかもですが、以下の点でforkとは異なります。
- 1つのリポジトリから複数作成できる(forkだと、同名のリポジトリとなるので1人のユーザー内で複数作成は不可)
- 元となったリポジトリのコミット履歴を継承せず、クリーンな状態でスタートできる
使い方
以下実際にTemplate Repositoryを作るところから説明します。
1. テンプレートとなるリポジトリの作成
まず、汎用性のある環境を整備したボイラープレート的なリポジトリを作ります。
自分の場合はこちらのリポジトリがそれに当たります。
整備している環境は以下の通りです。
- TypeScriptのビルド環境(TypeScript, ts-node)
- リンター、コードフォーマッター(ESLint, Prettier)
- テスト環境(Jest)
- 各npmスクリプト(test, lint, build)
Node.js + TypeScriptでちょっとしたCLIツール等を作るときに使えます。
2. Template Repositoryとして登録
GitHub上でリポジトリにアクセスして、メニューのSettingsからTemplate Repository
のチェックボックスをチェックしてください。
これだけでTemplate Repositoryとして登録されます。
![テンプレート機能](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F114396%2F4d7b95c6-f6b3-e07e-a9a2-601e32df4c34.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a07dfa11f9623fa9b891a7d69c7523b8)
3. テンプレートの利用
リポジトリのトップページを見ると、新しくUse this template
というボタンが追加されているはずです。
![スクリーンショット 2020-07 -12 17.50.59.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F114396%2Faa579d07-de24-d7de-8c1a-0c377539dec5.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a7718cf6015a51b7b02c6d3d571745bc)
このボタンを押すと、いつものリポジトリ作成画面に遷移します。あとは通常通りリポジトリ名、概要を入力し作成するだけです。
![スクリーンショット 2020-07-12 20.15.41.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F114396%2F0ac6bbe5-826e-be96-ffbd-b38281c18e79.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=33e882e243909fad3fe2cd7e5f2e3b98)
Initial commit
として元リポジトリのコードベースがコミットされたリポジトリが作成されます。
また、forkのようにリポジトリ名下部にgenerated from ...
としてテンプレートとなるリポジトリのリンクが記載されます。
![スクリーンショット 2020-07-13 6.07.19.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F114396%2F743c7b53-1ffd-b6ea-fc78-d1d4af7569bf.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=638a692c0086d996ba6e51aa446ceccd)
これでリンター、テスト環境が整備された上で直ぐ開発をスタートできます!便利!🎉
※ テンプレートへの依存はあくまで、作成時にInitial commit
でテンプレートの内容がコミットされるだけです。Template Repository側のリポジトリをその後変更しても、そこから作成したリポジトリには反映されないので注意です。
おすすめのTemplate Repository
テンプレートとして公開されているおすすめのリポジトリの紹介です。
node-typescript-boilerplate
Node.js + TypeScriptでプロジェクトをスタートするときに利用するリンターやら、テストパッケージ等が整備されています。
electron-react-boilerplate
ElectronでReactを利用する場合に必要なもののほぼ全てが入っています。
laravel-voilerplate
Authorizationや、Bootstrap4ベースのフロントエンド、その他諸々が整備されています。
終わりに
以上「GitHubのTemplate Repository機能のすゝめ」でした。
なかなか便利な機能なので、今後も自分なりのボイラープレートを作って利用していきたいです。