Dockerコンテナを使ってPC環境に依存しないReact x tailwind.cssの開発環境を構築する
Dockerコンテナを使ってPC環境に依存しないReact x tailwind.cssの開発環境を構築する
Reactが実行できる環境を用意するにはPCにnode.jsをインストールする必要があります。 しかし、ネットに転がっているチュートリアルを使って手を動かしてみようと思っても、依存関係が壊れていたり、自分の環境に入っている何かしらのライブラリのバージョンが古く、そもそも環境構築でつまづいてしまう人は少なくないのではないでしょうか? 私自身もReactの勉強をしようとこちらの記事の通りに環境構築を試したところ同じようにハマってしまいました。 そこで今回はDockerでnode.jsが動作するコンテナを用意し、その中でreactとtailwind.cssの開発が進められる環境を構築する手順をみなさんにご紹介できればと思います。
Dockerコンテナの用意
今回はDockerfileとdocker-compose.ymlを使ってコンテナ環境を用意します。
Dockerfileの作成
node.jsの現在のバージョンは公式サイトから確認できます。2022/10/30現在では18.12.0がLTS(long time support)なので18.12.0-alpine
をイメージとして使用します。
FROM node:18.12.0-alpine WORKDIR /usr/src/app
docker-compose.ymlの作成
version: '3.3' services: react-tutorial: build: context: . dockerfile: Dockerfile volumes: - ./react:/usr/src/app ports: - "3000:3000" stdin_open: true
./reactディレクトリを/usr/src/app
にマウントすることで、コンテナ内で実施した変更をローカルに反映させることができます。
コンテナ起動とReact開発環境の構築
docker-compose up -d
でコンテナを起動したら、vscodeの拡張機能であるRemote-Containers
を使ってコンテナに入りましょう。
[画像挿入]
Attach to Running Container...
に起動したコンテナの名称が表示されているはずなので、クリックしてreact-tutorial
コンテナに入ります。
ここで作ったはずのコンテナ名が表示されない時は、コンテナの作成に失敗していることが考えられます。Docker Desktopからコンテナ内のエラーログが確認できるので、適宜修正してください。
React環境を構築する
npx create-react-app
コマンドを実行して、新規のReactプロジェクトを作成します。プロジェクトの名前は今回はreact_sandbox
としています。
みなさんの好みに応じた名前をつけてください。
npx create-react-app react_sandbox
プロジェクト作成が終わったら、プロジェクトのディレクトリに移動してnpm start
を実行してReactが動作するかを確認します。
ブラウザが起動し下記の画面が表示されたら成功です。
Tailwind cssのインストールと設定
Reactが動作する環境は用意できたので、Tailwind cssのインストールを行います。yarnコマンドを利用してTailwind cssをインストールします。
npm install -D tailwindcss@npm:@tailwindcss/postcss7-compat @tailwindcss/postcss7-compat postcss@^7 autoprefixer@^9
ReactでTailwind cssを利用するにはcracoをインストールします。
yarn add @craco/craco
各種ファイルの更新
cracoのインストールが完了したら、react_sandbox配下のpackage.json
のscripts
配下を下記の通り修正します。
"scripts": { "start": "craco start", "build": "craco build", "test": "craco test", "eject": "react-scripts eject" },
次に、react_sandobox/src直下にcraco.config.js
を作成します。
module.exports = {}
いくつか環境構築の参考にした記事ではstyle配下のpostOptions
がpostcss
になっているものがありましたが、例えば下記のような記述でnpm run start
をしたところ下記のようなエラーが発生しました。
module.exports = { style: { postOptions: { plugins: [ require('tailwindcss'), require('autoprefixer'), ], }, }, }
TypeError: match.loader.options.plugins is not a function at extendsPostcss (C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\style\postcss.js:54:51) at overrideLoader (C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\style\postcss.js:97:9) at C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\style\postcss.js:118:13 at Array.forEach (<anonymous>) at overridePostcss (C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\style\postcss.js:117:17) at overrideStyle (C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\style\style.js:9:25) at mergeWebpackConfig (C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\merge-webpack-config.js:77:30) at overrideWebpackDev (C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\lib\features\webpack\override.js:11:36) at C:\Development\Open Source\Learning Hub\react\node_modules\@craco\craco\scripts\start.js:27:5
こちらのstackoverflowの記事によると、craco configはtailwindのドキュメントではもう必要ない記述になったようです。最後に
Tailwind cssの設定ファイルであるtailwind.config.jsを作成するためにnpx tailwindcss init
コマンドを実行します。
最後に、Tailwind cssのclassをそれぞれのファイルから利用できるように
srcフォルダにあるindex.cssを更新します。
@tailwind base; @tailwind components; @tailwind utilities;
vscodeで実装していると、これらの記述に対してUnknown at rule @tailwind css
と警告されることがあります。その場合PostCSS Language Support
という拡張機能を入れる、または下記のように記述することでエラーが解消します。
@import "tailwindcss/base"; @import "tailwindcss/components"; @import "tailwindcss/utilities";
動作確認
これでReactでTailwind cssを設定する準備が整いました。App.js
をTailwind cssを使って記述し直すことで、読み込めるかどうか確認します。ブラウザを開いて、画面中央に文字が表示されれば正常に動作していることになります。
お疲れ様でした!