RailsアプリでReactを使う場合の挙動を確認したく、小さな試作アプリを作成することにしました。
以下の記事がわかりやすく、参考に進めさせていただきます。
参照:Rails 7 で React & TypeScript を導入する方法(tsx, esbuild, jsbundling-rails)
Railsのバージョンを確認
Rails7が使える状態であることを確認します。
❯ rails -v Rails 7.0.4.3
アプリを作成
❯ rails new react_test_app -d postgresql --css=tailwind --javascript=esbuild
DBはポスグレ、Cssはtailwind、Javascriptはesbuildを指定します。
Tailwind CSS: CSSフレームワーク。Bootstrapより細かいデザインが可能。
esbuild:フロントエンドのコード変換+バンドルツール。
esbuildはTypeScriptの拡張子である.tsx
をサポートしています。
esbuildは非常に高速なJavaScript/TypeScriptのバンドラおよびコンパイラであり、.tsx
のファイルを処理することも得意としています。
そのため、上記のコマンドでViewにTSXを使える状態でセットアップできます。
作成されたpackage.jsonの内容を確認します。
ちゃんと、esbuild app/javascript/*.*
が含まれていました。
{ "name": "app", "private": "true", "dependencies": { "@hotwired/stimulus": "^3.2.2", "@hotwired/turbo-rails": "^8.0.0-beta.1", "autoprefixer": "^10.4.16", "esbuild": "^0.19.7", "postcss": "^8.4.31", "tailwindcss": "^3.3.5" }, "scripts": { "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=/assets", "build:css": "tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css --minify" } }
Reactを使う準備
yarnコマンドでreactを使用する準備をします。
yarnは、JavaScriptパッケージマネージャーでJavaScriptおよびNode.js用のパッケージを管理するためのツールです。
❯ yarn add react react-dom yarn add v1.22.19 [1/4] 🔍 Resolving packages... [2/4] 🚚 Fetching packages... [3/4] 🔗 Linking dependencies... [4/4] 🔨 Building fresh packages... success Saved lockfile. success Saved 4 new dependencies. info Direct dependencies ├─ react-dom@18.2.0 └─ react@18.2.0 info All dependencies ├─ js-tokens@4.0.0 ├─ react-dom@18.2.0 ├─ react@18.2.0 └─ scheduler@0.23.0 ✨ Done in 2.45s.
あわせてコントローラーを作成します。
❯ rails g controller home index create app/controllers/home_controller.rb route get 'home/index' invoke erb create app/views/home create app/views/home/index.html.erb invoke test_unit create test/controllers/home_controller_test.rb invoke helper create app/helpers/home_helper.rb invoke test_unit
tailwind.config.js ファイルを開き、slimとtsxを読み込むための設定もします。
slimは、Rubyのテンプレートエンジンの1つで、特にRailsプロジェクトで広く使われています。
SLIMはHTMLをより簡潔に記述できるようにデザインされており、通常のHTMLよりも記述がシンプルで、見やすくなります。
# tailwind.config.js module.exports = { content: [ './app/views/**/*.html.erb', './app/helpers/**/*.rb', './app/assets/stylesheets/**/*.css', './app/javascript/**/*.js', './app/views/**/*.html.slim', './app/javascript/**/*.tsx' ] }
次はviewでreactが表示されるようにしてみたいと思います。