第4回 Laravel10 環境構築メモ(Eslint+ Prettier①)

はじめに

第3回まででLaravelの起動、データベースへの接続、Xdebugの導入は完了。今回はFrontendをReact + Typescriptで開発してみようという所で、ESlintとPrettierを導入してみます。と、思ったんですが長くなるので、2回に分けてメモ。今回はESlintの導入。

ESlintの導入

ESslintのinstall

npm install eslint --save-dev

ESlintの初期化

この後、色々と聞かれので、選択していきます。

Ok to proceed?
→ y

npm init @eslint/config

Need to install the following packages:
  @eslint/create-config@0.4.6
Ok to proceed? (y) y

How would you like to use ESLint?
→ To check syntax, find problems, and enforce code style


? How would you like to use ESLint?To check syntax only
  To check syntax and find problems
▸ To check syntax, find problems, and enforce code style

What type of modules does your project use?
→ JavaScript modules (import/export)

? What type of modules does your project use? … 
▸ JavaScript modules (import/export)
  CommonJS (require/exports)
  None of these

Which framework does your project use?
→ React

? Which framework does your project use? … 
▸ React
  Vue.js
  None of these

Does your project use TypeScript?
→ Yes

? Does your project use TypeScript? ‣ No / Yes

Where does your code run?
→ Browser

? Where does your code run? …  (Press <space> to select, <a> to toggle all, <i> to invert selection)
▸ Browser
  Node

How would you like to define a style for your project?
→ Use a popular style guide

? How would you like to define a style for your project? … 
▸ Use a popular style guide
  Answer questions about your style

Which style guide do you want to follow?
→ Standard

? Which style guide do you want to follow? … 
▸ Standard: https://github.com/standard/eslint-config-standard-with-typescript
  XO: https://github.com/xojs/eslint-config-xo-typescript

What format do you want your config file to be in?
→ YAML

? What format do you want your config file to be in? … 
  JavaScript
▸ YAML
  JSON

Would you like to install them now?
→ Yes

Checking peerDependencies of eslint-config-standard-with-typescript@latest
The config that you've selected requires the following dependencies:

eslint-plugin-react@latest eslint-config-standard-with-typescript@latest @typescript-eslint/eslint-plugin@^6.4.0 eslint@^8.0.1 eslint-plugin-import@^2.25.2 eslint-plugin-n@^15.0.0 || ^16.0.0  eslint-plugin-promise@^6.0.0 typescript@*
? Would you like to install them now? ‣ No / Yes

Which package manager do you want to use?
→ npm

? Which package manager do you want to use? … 
▸ npm
  yarn
  pnpm

ここまで進めると後は諸々、下記の通り、installが進みます。

Installing eslint-plugin-react@latest, eslint-config-standard-with-typescript@latest, @typescript-eslint/eslint-plugin@^6.4.0, eslint@^8.0.1, eslint-plugin-import@^2.25.2, eslint-plugin-n@^15.0.0 || ^16.0.0 , eslint-plugin-promise@^6.0.0, typescript@*

added 13 packages, changed 5 packages, and audited 452 packages in 4s

156 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
Successfully created .eslintrc.yml file in /var/www/sample

Style Guideの導入

style guideで選択した、standardをinstall。

npm install eslint-config-standard --save-dev

Pluginの導入

ParserとReactHooksを追加。


npm install eslint-plugin-react-hooks --save-dev
npm install @typescript-eslint/parser --save-dev

.eslintrc.ymlの修正

そのままだと動かないので、下記の感じでファイルを修正してください。

env:
  browser: true
  es2021: true
settings: { react: { version: 'detect' } }
extends:
  - standard-with-typescript
  - plugin:react/recommended
parser: '@typescript-eslint/parser'
parserOptions:
  ecmaVersion: latest
  sourceType: module
  project: ./tsconfig.json
plugins:
  - react
  - react-hooks
rules:
  {
    react-hooks/rules-of-hooks: error,
    react-hooks/exhaustive-deps: warn,
    'react/jsx-uses-react': 'off',
    'react/react-in-jsx-scope': 'off'
  }

package.jsonの修正

scriptsに"lint"と"lint-fix"を追加します。

  "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",
    "lint": "eslint --ext .tsx,.ts resources/",
    "lint-fix": "npm run lint -- --fix",
  },

コマンドの実行

npm run lint

上記のコマンドを実行すると、下記の様なメッセージが出力されます。例では、warningが1件出てるだけですが、最初、コマンド実行すると、沢山、エラーが出ますが、そういうものです。うまく動いてる証拠です。

> lint
> eslint --ext .tsx,.ts resources/

=============

WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.

You may find that it works just fine, or you may not.

SUPPORTED TYPESCRIPT VERSIONS: >=4.3.5 <5.3.0

YOUR TYPESCRIPT VERSION: 5.3.2

Please only submit bug reports when using the officially supported version.

=============

/var/www/sample/resources/js/Pages/Auth/Login.tsx
  27:6  warning  React Hook useEffect has a missing dependency: 'reset'. Either include it or remove the dependency array  react-hooks/exhaustive-deps

✖ 1 problem (0 errors, 1 warning)


いいなと思ったら応援しよう!