Webサービスを開発するときはLaravelやNext.jsなどのフレームワークを使うことが多いのですが、フロント開発だけ切り分けたいときにはReact環境を別途立てることがあります。
create-react-app
はいつのまにか非推奨になっているようですので、Laravelでも採用されているViteでReact環境を構築して、ついでにTailwindやHuskyなども使えるようにしていきます。
なお、Nodeやnpmはインストールされている前提ですすめていきます。
目指す環境
- Vite + React + TypeScript
- TailwindCSS
- ESLint + Prettier
- Husky hook + lint-staged
Vite + React のインストール
コマンドで一発です。簡単ですね。
https://vitejs.dev/guide/#scaffolding-your-first-vite-project
npm create vite@latest
✔ Project name: … vite-project
✔ Select a framework: › React
✔ Select a variant: › TypeScript
プロジェクト名などを聞かれるので、frameworkはReact、variantはTypeScriptを選びます。
TailwindCSSのインストール
こちらもマニュアル通りに進めれば簡単です。
https://tailwindcss.com/docs/guides/vite
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
@tailwind base;
@tailwind components;
@tailwind utilities;
Prettierのインストール
ESLintはVite + React をインストールしたときに一緒にインストールされているのでPrettierのみをインストールしていきます。
https://prettier.io/docs/en/install
https://github.com/prettier/eslint-config-prettier#installation
npm install -D prettier eslint-config-prettier
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:react-hooks/recommended',
'prettier',
],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
}
.prettierrc.jsonはお好みに合わせて設定してください。
{
"printWidth": 120,
"tabWidth": 2,
"semi": true,
"singleQuote": true,
"jsxSingleQuote": true,
"trailingComma": "all",
"endOfLine": "lf"
}
以上でPrettierが動くようになりました。
npx prettier src/App.tsx --write
↑のコマンドで.prettierrc.jsonの設定通りにファイルが修正されれば成功です。
Husky と lint-staged のインストール
Husky と lint-stagedを一緒に使うことで、コミット前に自動でESLintやPrettierを適用させることができます。Huskyの公式サイトよりもPrettierのサイトにある手順がわかりやすいです。
https://prettier.io/docs/en/install#git-hooks
npm install --save-dev husky lint-staged
npx husky install
npm pkg set scripts.prepare="husky install"
npx husky add .husky/pre-commit "npx lint-staged"
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview",
"prepare": "husky install"
},
"lint-staged": {
"src/*.{js,jsx,ts,tsx}": "prettier --write"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
以上です。
コメント