###### tags: `Web Programming` `Eslint` `Prettier` `VScode` # 在VScode中,使用 ESlint + Prettier 來開發 React [新版網址](https://rulerchen.github.io/RulerChen-Website/docs/Next.js/EslintPrettier) 1. 建立 eslint ```= npm init @eslint/config ``` 2. 建立設定檔,按照以下建議回答問題 ```= ? 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) CommonJS (require/exports) None of these ? Which framework does your project use? ... > React Vue.js None of these ? Does your project use TypeScript? > No / Yes ? Where does your code run? ... > Browser Node ? What format do you want your config file to be in? ... JavaScript YAML > JSON ? Would you like to install them now? No / > Yes ? Which package manager do you want to use? ... > npm yarn pnpm ``` 3. 安裝 prettier ```= npm install --save-dev --save-exact prettier ``` 4. 在```.eslintrc.json```檔中更改設定,在extends中加入prettier ```= { "env": { "browser": true, "es2021": true }, "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], "overrides": [], "parserOptions": { "ecmaVersion": "latest", "sourceType": "module" }, "plugins": ["react"], "rules": {} } ``` 5. 建立```.prettierrc```檔,並加入設定(可自行更改) ```= { "semi": true, "tabWidth": 2, "printWidth": 100, "singleQuote": true, "trailingComma": "all", "jsxSingleQuote": true, "bracketSpacing": true } ``` 6. 建立```.vscode```資料夾,並新增檔案```settings.json```,並加入以下指令 ```= { "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true } ``` 7. 完成囉~這樣就只需要保存檔案他就會自動排版了,或者你也可以使用指令來進行排版,在```package.json```的script中新增指令 ```= "lint": "eslint src/**/*.{js,jsx,ts,tsx,json}", "lint:fix": "eslint --fix src/**/*.{js,jsx,ts,tsx,json}", "format": "prettier --write src/**/*.{js,jsx,ts,tsx,css,md,json,scss} --config ./.prettierrc" ``` 8. 新增```.prettierignore```檔,並將不需要排版的檔案丟進去 ```= /node_modules .vscode ``` 9. 執行```npm run lint```的時候可能會報錯,顯示無法抓到extends中的prettier,這時候可以安裝這個檔案 ```= npm install --save-dev eslint-config-prettier ``` 10. 新的BUG出現,```Parsing error: Unexpected token <```,我透過babel來解決這個問題 ```= npm i -D @babel/eslint-parser @babel/preset-react @babel/core ``` 並修改```.eslintrc.json``` ```= { "env": { "browser": true, "es2021": true }, "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], "overrides": [], "parser": "@babel/eslint-parser", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", "requireConfigFile": false, "babelOptions": { "presets": ["@babel/preset-react"] } }, "plugins": ["react"], "rules": {} } ``` 11. 如果在執行```npm run lint```的時候出現```Warning: React version not specified in eslint-plugin-react settings.```,可以更改```.eslintrc.json```為 ```= { "env": { "browser": true, "es2021": true }, "extends": ["eslint:recommended", "plugin:react/recommended", "prettier"], "overrides": [], "parser": "@babel/eslint-parser", "parserOptions": { "ecmaVersion": "latest", "sourceType": "module", "requireConfigFile": false, "babelOptions": { "presets": ["@babel/preset-react"] } }, "plugins": ["react"], "rules": {}, "settings": { "react": { "version": "detect" } } } ``` 大功告成,應該不會再有錯了吧QQ