これは何?

これは株式会社 Shinonomeが提供している学生コミュニティ「Playground」の、ウェブサイトのトレース課題です。

使用した OSS

このトレースサイトは、以下の OSS により実現しました。

ビルド方法

このプログラムでは、次のバージョンを使用しています。

  • pNPM == 6.25.1
  • Node.js == 16.13.0

依存関係のインストール

pnpm install

開発サーバーの起動

pnpm run dev

ビルド

pnpm run build

デプロイ

このレポジトリでは、GitHub Actionsによって、mainブランチにプッシュされたら自動でビルド&デプロイを行います。

技術選定

次の理由により、フレームワークの選定を行いました。

React

  • Typescript ネイティブでチーム開発に適している。
  • 将来的に SSR/SSG をするときに、Next.jsの恩恵を受けることができる。

Emotion

  • 似たような OSS に、Styled Componentsがあるが、こちらの方がキャッシュ機能が優秀で、高いパフォーマンスが期待できる。
  • 他に、CSS Modulesという選択肢があるが、次のような理由で採用しなかった。
    • ファイル構成が冗長になる
    • stylesの型がanyになる。

Vite & pNPM

  • Vite は内部的にesbuildを使用していて、esbuild は Go 言語を使用しているため、非常にビルドが速い。ただし、esbuild はトランスコンパイルのみで TypeScript の型チェックを行わないため、ビルドにはtsc --noEmitが必要。
  • pNPM は、独自のキャッシュ機能や最適化により、npm よりも高速に依存関係をインストールできる。