Skip to content

Latest commit

 

History

History
177 lines (118 loc) · 9.16 KB

README_developer.md

File metadata and controls

177 lines (118 loc) · 9.16 KB

開発者向け Readme

ローカル環境で動かす場合、yarn のインストールが必須となります。npm や pnpm には対応していません。

Flocon は yarn v31 のワークスペースを採用しています。パッケージ 📦 の一覧は次のとおりです。

Flocon
┣ 📂 apps
┃ ┣ 📦 api-server
┃ ┗ 📦 web-server
┣ 📂 packages
┃ ┣ 📦 cache
┃ ┣ 📦 core
┃ ┣ 📦 default-pino-transport
┃ ┣ 📦 eslint-config
┃ ┣ 📦 flocon-script
┃ ┣ 📦 prettier-config
┃ ┣ 📦 rollup-config
┃ ┣ 📦 sdk
┃ ┣ 📦 sdk-react
┃ ┣ 📦 sdk-urql
┃ ┣ 📦 tsconfig
┃ ┣ 📦 typed-document-node
┃ ┣ 📦 utils
┃ ┗ 📦 web-server-utils
┣ 📄 README_developer.md (このファイル)
┗ ……

ビルドやテストは、全体で行うことも、特定のパッケージのみに対して行うこともできます。例えば、この Markdown ファイルがあるディレクトリでyarn run buildを実行すると、全パッケージがビルドされます。./packages/coreに移動してからyarn run buildを実行すると、coreパッケージとそれに依存するパッケージのみがビルドされます。

現時点では watch スクリプトはありません。ご了承ください。

必要動作環境

(Netlify や fly.io にデプロイする場合は必要ありません)

  • yarn のインストール(corepack を有効化している場合は、corepack によって自動的にインストールされます)
  • Node.js v18, v20 のいずれかのインストール

husky のインストール

Flocon は husky を用いて https://www.npmjs.com/package/@commitlint/cli によるコミットメッセージの自動チェックを行う機能がありますが、husky のインストールは自動的には行われません。インストールするには、この Markdown ファイルがあるディレクトリで yarn install-husky を手動で実行する必要があります。

Flocon リポジトリへの Pull Request の作成を考えていない場合、husky のインストールは必要ありません。また、Pull Request を作成する予定がある場合でも husky のインストールは任意です。

ローカルでの API サーバーの実行方法

環境変数のセットが必須です。また、環境変数のセットにおいて、Firebase プロジェクトの準備も必要になります。

データベースとして PostgreSQL もしくは MySQL を使う場合は対応するデータベースサーバーを起動しておく必要があります。SQLite の場合は不要です。

main ブランチから checkout した場合は、次のコマンドを実行しておく必要があります。このコマンドでは TypeScript コードをコンパイルして JavaScript コードの生成が行われます。他のブランチ(main-buildrelease など)ではコンパイル済みの JavaScript コードが同梱しているためこのコマンドの実行は不要です。

cd ./apps/api-server
yarn run build

API サーバーを動かすには、次のコマンドを実行してください。

cd ./apps/api-server
yarn run start

ローカルでの Web サーバーの実行方法

環境変数のセットが必須です。また、環境変数のセットにおいて、Firebase プロジェクトの準備も必要になります。

main ブランチから checkout した場合は、API サーバーと同様に TypeScript コードのコンパイルが必要なため、次のコマンドを実行しておく必要があります。

cd ./apps/web-server
yarn run build:deps

Web サーバーを動かすには、次のコマンドを実行してください。

開発用サーバーを動かす場合:

cd ./apps/web-server
yarn run dev

静的ファイルを利用せずに本番サーバーを動かす場合:

cd ./apps/web-server
yarn run start

静的ファイルを利用して本番サーバーを動かす場合:

cd ./apps/web-server
yarn run export
yarn run serve

Storybook

Chromatic

Chromatic

ローカルで実行

cd ./apps/web-server
yarn run storybook

テストの実行

テストの実行方法には次の 2 つがあります。

このドキュメントではローカルで実行する方法を説明します。

クイックスタート

一例として、次のコマンドを実行することで、全てのパッケージをテストできます。

Linux

yarn run build
REDIS_TEST=0 MYSQL_TEST=0 POSTGRESQL_TEST=0 yarn run test

Powershell

yarn run build
$env:REDIS_TEST=0
$env:MYSQL_TEST=0
$env:POSTGRESQL_TEST=0
yarn run test

詳細

パッケージのディレクトリ内でyarn run testを実行することで、パッケージ単体をテストすることもできます。

環境変数

REDIS_TESTに falsy な値をセットすることで Redis を使用したテストをスキップできます。Redis を使用したテストを実行する場合は Redis サーバーを起動しておく必要があります。

Redis を使用したテストは./packages/cacheパッケージにのみ存在します。このパッケージをテストしない場合はREDIS_TESTの値は利用されません。現時点では Flocon の Web サーバーと API サーバーでは Redis を使っていないため、Redis を使用したテストは基本的にスキップして構いません。

MYSQL_TESTPOSTGRESQL_TESTSQLITE_TESTに falsy な値をセットすることで、それぞれのリレーショナルデータベースを使用したテストをスキップできます。MySQL や PostgreSQL を使用したテストを実行する場合は、それぞれのデータベースを準備しておく必要があります。SQLite は事前の準備は必要ありません。

テストに使われるデータベースの URL は ./apps/api-server/test/utils/databaseConfig.ts に記述されています。databaseConfig.ts を編集してテストしても構いません。

リレーショナルデータベースを使用したテストは api-server パッケージにのみ存在します。このパッケージをテストしない場合はMYSQL_TESTPOSTGRESQL_TESTSQLITE_TESTの値は利用されません。

ブランチ名について

※ 現在採用しているフローおよびブランチ名は暫定です。

  • main: 開発ブランチです。Flocon の TypeScript ソースコードからコンパイルされた JavaScript コードは含まれていません(.gitignore に含まれている dist/ によって git からは無視されます)。
  • main-build: main ブランチと似ていますが、コンパイルされた JavaScript コードが含まれている点が異なります。main ブランチに push があった場合、GitHub Actions によって自動的にビルドされた後に main-build ブランチにも push されます。手動で main-build ブランチに直接 push することは通常はありません。
  • prerelease/v*.*.*: 重要度の高いバグ修正を含んだリリースの前段階となるブランチです。* には数値等が入ります。必ずしも存在するとは限りません。コンパイルされた JavaScript コードが含まれます。通常は main-build ブランチから pull request が作成され、merge されます。
  • release: リリース済みのコード置き場です。コンパイルされた JavaScript コードが含まれます。通常は prerelease/v*.*.* もしくは main-build ブランチから pull request が作成され、merge されます。

リリースまでの流れ

releaseブランチにマージされたコードがリリースされます2。基本的にはmainブランチからマージされます。ただし、重要度の高いバグ修正をリリースしたいがmainブランチがまだ不安定でマージできない場合は、代わりにreleaseブランチからprerelease/v*.*.*ブランチを切り、そのバグ修正をコミットして、releaseブランチにマージしてリリースします。バグ修正の内容をmainブランチに反映させるため、そちらにもマージします。

Footnotes

  1. グローバルインストールする yarn のバージョンは v1 で構いません。詳細は https://www.wantedly.com/companies/wantedly/post_articles/325643 のポイント 3 を参照してください。

  2. 正確にはタグの push によって自動リリースされます。