Reactのプロジェクトを作成する

2024/06/07に公開

はじめに

React、TypeScriptのプロジェクトを作るときの作業メモを備忘録として残します。

作業環境

  • OS: MacOS Sonoma 14.5
  • ターミナル: zsh(VSCode)

作業手順

1. Voltaのインストール

Voltaはnpmやnodeなど、Javascriptに関連するツールのバージョンを管理するためのツールです。
今回はNode.jsのバージョンを管理するためにインストールします。

Voltaについて詳しく知りたい方は公式サイトを見てみてください。
https://volta.sh/

以下のコマンドでhomebrew経由のインストールを行います。

zsh
brew install volta

homebrewがインストールしていない方はこちらを参照
https://brew.sh/ja/

homebrew経由でインストールした場合は以下のコマンドで初期設定をしておく。

zsh
volta setup

https://docs.volta.sh/reference/setup

2. Node.jsのインストール

インストールしたvoltaを使用して、以下のコマンドでnodeをインストールします。

zsh
volta install node

voltaのコマンドについては公式ドキュメントを参照

https://docs.volta.sh/reference/

3. Corepackのインストール

pnpmが速いらしいので使ってみたいな〜と思って調べていたら見つけた記事。
https://zenn.dev/longrun_jp/articles/volta-node-corepack-pnpm

Corepackを使うとスマートにバージョン管理ができるらしい。

・・・Corepackって何?

https://zenn.dev/teppeis/articles/2021-05-corepack

利用者がグローバルに corepack をインストールしていて、かつプロジェクト側で package.json にパッケージマネージャと利用バージョンを指定しておけば、指定したパッケージマネージャを自動的に使わせたり、他のパッケージマネージャを使えなくしたりできる。

https://zenn.dev/monicle/articles/1c06f3f75b2cb1

corepack 0.20 以降は corepack use コマンドで package.json への追加ができます。しかもこのコマンドを使うと SHA-256 ハッシュを含むバージョンが指定されます。

つまりcorepackを使えばプロジェクトの環境構築をするときにbrew install pnpmとかをわざわざやる必要がなくなるらしい!あとnpmとnodeのバージョンを切り離せるから頻繁にバージョンアップする人とかは使ったほうがいいかも。

ということで以下のコマンドでcorepackをインストールする。

zsh
volta install corepack

インストールしたcorepackを有効化する。

zsh
corepack enable

nodeに標準で追加されたから別途インストールとか必要ないのかと思ってたけど、voltaとかを経由してnodeをインストールした場合はパス設定とかをしないとvoltaから認識できないから結局インストールが必要らしい。
(パス追加だけてcorepack使える設定もある気がするけど調べてない)

4. pnpmを使ってViteのプロジェクトを作成する

corepackでpnpmを有効化する。

zsh
corepack enable pnpm

試しにバージョン確認をしたらpnpmのダウンロードが始まった。

zsh
pnpm -v

! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.2.0.tgz
? Do you want to continue? [Y/n] y
9.2.0

Viteの環境構築をやったことがないので公式ドキュメントと記事を読む。

https://ja.vitejs.dev/guide/#最初の-vite-プロジェクトを生成する

https://zenn.dev/kazukix/articles/react-setup-2024#vite

以下のコマンドでカレントディレクトリにプロジェクトのファイルを展開しつつ生成できそう。

zsh
pnpm create vite . -- --template react-swc-ts

生成時の選択肢は「React」と「TypeScript + SWC」を選択。

コンパイラには Babel ではなく SWC を使用したいため、react-swc-ts テンプレートを使用します。

環境構築の記事でこう書いてあるけどSWCって何・・・?コンパイラらしいけど・・・?

https://swc.rs/

SWC は、コンパイルとバンドルの両方に使用できます。コンパイルには、最新のJavaScript機能を使用してJavaScript / TypeScriptファイルを取得し、すべての主要なブラウザーでサポートされている有効なコードを出力します。

らしいです、Babelよりも新しくて速いコンパイラなのでとても良さそう。
なんか前にNext.jsの内部にRustが採用されたからフロントエンドやるならRust書けたほうがいいみたいな話を聞いたけどSWCのことだったのかな?

とりあえずプロジェクトはできたので、以下のコマンドでライブラリとかをインストールする。

zsh
pnpm i

インストールが終わったら起動!

zsh
pnpm dev

http://localhost:5173 にアクセスして、以下が表示されれば完了!


カッコイイ!

Discussion