環境構築からプルリクエストまでの流れ
環境構築から執筆、公開までの流れと手順を説明します。
編集環境のセットアップ
リポジトリをGitHub上でフォークし、フォークしたリポジトリをチェックアウトします。(当リポジトリにコミット権限がある方はフォークする必要はありません。)
shell# 一般の方git clone git@github.com:自分のアカウント/フォーク先のリポジトリ名.git# 当プロジェクトにコミット権限がある方git clone git@github.com:yytypescript/book.git
shell# 一般の方git clone git@github.com:自分のアカウント/フォーク先のリポジトリ名.git# 当プロジェクトにコミット権限がある方git clone git@github.com:yytypescript/book.git
必要なツールをインストールします。
shellyarn
shellyarn
開発サーバーを起動します。
shellyarn start
shellyarn start
開発サーバーの起動には結構な時間がかかります。プロセスを停止せずにお待ちください。
開発サーバーが起動したら、ブラウザでhttp://localhost:3000を開きます。
ブランチを作る
ブランチを作成します。
bashgit checkout -b ブランチ名
bashgit checkout -b ブランチ名
masterブランチには直接pushできません。そのため変更はブランチで行う必要があります。
コンテンツを作る
新規ページを追加する場合
docsディレクトリに新規ページのMarkdownファイルを追加します。
shellmkdir -p docs/カテゴリ名/サブカテゴリ名touch docs/カテゴリ名/サブカテゴリ名/new-page.md
shellmkdir -p docs/カテゴリ名/サブカテゴリ名touch docs/カテゴリ名/サブカテゴリ名/new-page.md
sidebars.jsに新規ページへのパスを追加します。パスには拡張子.mdを含めません。
sidebars.jsjsmodule.exports = {// ...tutorialSidebar: [{type: "category",label: "カテゴリ名",items: [{type: "category",label: "サブカテゴリ名",items: [// highlight-next-line"カテゴリ名/サブカテゴリ名/new-page",],},],},],};
sidebars.jsjsmodule.exports = {// ...tutorialSidebar: [{type: "category",label: "カテゴリ名",items: [{type: "category",label: "サブカテゴリ名",items: [// highlight-next-line"カテゴリ名/サブカテゴリ名/new-page",],},],},],};
ここまで完了したら、作成したファイルを編集していきます。
既存ページを変更する場合
既存ページを変更する場合は、docsディレクトリから当該ファイルを探して編集してください。
コンテンツ編集時に知っておくとよいこと
📄️ VS Codeで編集する
Markdownファイルを編集するエディターはVS Codeがお勧めです。
📄️ Markdown
Markdownは標準的な記法に加えて、本プロジェクトで独自拡張した仕様があります。
📄️ ファイル構成
どこにどのようなファイルがあるかを説明します。
コミットする
作成したファイルを編集したらコミットします。
shellgit add docs/カテゴリ名/サブカテゴリ名/new-page.mdgit commit -m "「新しいページ」を追加しました。"
shellgit add docs/カテゴリ名/サブカテゴリ名/new-page.mdgit commit -m "「新しいページ」を追加しました。"
このプロジェクトは日本語話者向けなので、コミットメッセージは日本語で構いません。
コミットメッセージの例:
- 「型注釈」を追加しました。
- 「関数」にサンプルコードを追加しました。
- 誤字「使用」を「仕様」に修正しました。
コンテンツを校正する
コードスタイルの校正
Prettierとmarkdownlintで、Markdownの記法スタイルやコードブロック内のTypeScriptコードスタイルを修正します。
shellyarn markdownlint:fixyarn prettier:fix
shellyarn markdownlint:fixyarn prettier:fix
Prettierの自動整形をさせたくないコードブロックには<!--prettier-ignore-->をつけます。
markdown<!--prettier-ignore-->```tstype Code =| 1| 2| 3;```
markdown<!--prettier-ignore-->```tstype Code =| 1| 2| 3;```
markdownlintで指摘されたエラーの詳細はmarkdownlintのドキュメントをご覧ください。
日本語の校正
textlintで日本語に問題がないかチェックします。
shellyarn textlint
shellyarn textlint
textlintで問題が指摘された箇所で、変更すべきところを変更します。
textlint指摘箇所をすべて直していい場合はyarn textlint:fixで一括修正できます。
textlintのエラーが出ない書き方が望ましいです。場合によって、textlintを無効にしたいことがあるかもしれません。無効化したい部分はコメントで囲みます。
markdown...<!--textlint-disable prh-->textlintのprhルールが無効になるエリア<!--textlint-enable prh-->...
markdown...<!--textlint-disable prh-->textlintのprhルールが無効になるエリア<!--textlint-enable prh-->...
注意点として、コメントの前後には空行が必要です。
NGmarkdown<!--textlint-disable-->無効化したいテキスト<!--textlint-enable-->
NGmarkdown<!--textlint-disable-->無効化したいテキスト<!--textlint-enable-->
OKmarkdown<!--textlint-disable-->無効化したいテキスト<!--textlint-enable-->
OKmarkdown<!--textlint-disable-->無効化したいテキスト<!--textlint-enable-->
校正結果をコミットする
自動修正の結果は差分で確認します。
shellgit diff
shellgit diff
自動修正による変更をもとに戻すには、git checkoutを使います。
自動修正の内容に問題がなければコミットします。
shellgit add docs/カテゴリ名/サブカテゴリ名/new-page.mdgit commit --amend # 直前のコミットに含めて、コミットを1つにする方法です
shellgit add docs/カテゴリ名/サブカテゴリ名/new-page.mdgit commit --amend # 直前のコミットに含めて、コミットを1つにする方法です
プルリクエストを送る
プルリクエストを送る前にできるだけコミットが1つになっているか確認してください。
変更内容をpushします。
shellgit push -u origin ブランチ名
shellgit push -u origin ブランチ名
プルリクエストの作成時にはGitHubのキーワードを用いたissueの関連付け機能を用いて、対応したissueをプルリクエストに関連付けてください。これには2つの目的があります。ひとつは、プルリクエストの経緯をたどれるようにすることです。もうひとつは、プルリクエストがマージされた際に、issueが自動クローズされるようにするためです。たとえば、issue #123を解決するプルリクエストであれば、本文中に次のようなキーワードを書きます。
markdownClose #123
markdownClose #123
これはチケット駆動プロセスで必要となる手順です。
📄️ チケット駆動(プルリクする前に話し合おう)
「着手する前に話し合おう」をチケット駆動で行う流れについて説明します。
プルリクエストが作成されると、CIが走りコードスタイルなどのチェックが行われます。CIに問題がなければメンテナーによってマージされます。マージ権限がある方は、CIの結果を確認の上、問題なければ自分でマージして構いません。