プリティとeslint自動化であなたの反応コードベースをギアアップ
最近、私はすべての新しいプロジェクトのためにやっていた繰り返しタスクがあることに気づいた.そこで、間違いを繰り返さないように書類を提出することにしました.この記事は、プロジェクトにPrettier、ESLint、Huskyを設定することについてです.
この記事はあなたを助けることができます.
セットアップ手順
NPX
でそれを好む.npx create-react-app my-app --template typescript
JavaScriptプロジェクトの場合:npx create-react-app my-app
Yarn
またはNPM
も使えます.詳細は
をチェックアウトできます.yarn add -D eslint eslint-plugin-react prettier eslint-plugin-jest eslint-plugin-react-hooks @typescript-eslint/eslint-plugin @typescript-eslint/parser husky @commitlint/{config-conventional,cli}
書き込み時のパッケージのバージョンは以下の通りです.{
"devDependencies": {
"@commitlint/cli": "^13.1.0",
"@commitlint/config-conventional": "^13.1.0",
"@typescript-eslint/eslint-plugin": "^4.29.0",
"@typescript-eslint/parser": "^4.29.0",
"eslint": "^7.32.0",
"eslint-plugin-jest": "^24.4.0",
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-react-hooks": "^4.2.0",
"husky": "^7.0.1",
"prettier": "^2.3.2"
}
}
JavaScriptでyarn add -D eslint eslint-plugin-react prettier eslint-plugin-jest eslint-plugin-react-hooks husky @commitlint/{config-conventional,cli}
書き込み時の依存関係のバージョンは以下の通りです.{
"devDependencies": {
"@commitlint/cli": "^13.1.0",
"@commitlint/config-conventional": "^13.1.0",
"eslint": "^7.32.0",
"eslint-plugin-jest": "^24.4.0",
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-react-hooks": "^4.2.0",
"husky": "^7.0.1",
"prettier": "^2.3.2"
}
}
cd my-app
を作成します.また、CRA docsをvscodeにインストールします.{
"singleQuote": true,
"jsxBracketSameLine": false,
"useTabs": false,
"eslintIntegration": false,
"tslintIntegration": true,
"requireConfig": false,
"stylelintIntegration": false,
"arrowParens": "always",
"bracketSpacing": true,
"embeddedLanguageFormatting": "auto",
"htmlWhitespaceSensitivity": "css",
"insertPragma": false,
"jsxSingleQuote": true,
"tsxSingleQuote": true,
"printWidth": 80,
"proseWrap": "preserve",
"quoteProps": "as-needed",
"requirePragma": false,
"semi": true,
"tabWidth": 2,
"trailingComma": "es5"
}
Note: I prefer this config, you can use Playground and choose what works for you. You can check out the rationale and the options to understand the rules better.
.prettierrc
を追加しました.また、Prettier pluginをvscodeにインストールします.{
"settings": {
"react": {
"version": "detect"
}
},
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["react"],
"rules": {
"no-bitwise": 0,
"react/react-in-jsx-scope": "off",
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn",
"@typescript-eslint/ban-ts-comment": "off",
"@typescript-eslint/explicit-module-boundary-types": "off",
"@typescript-eslint/no-explicit-any": "off"
}
}
JavaScriptの場合:{
"settings": {
"react": {
"version": "detect"
}
},
"env": {
"browser": true,
"es2021": true,
"node": true,
"jest": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended"
],
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": ["react"],
"rules": {
"no-bitwise": 0,
"react/react-in-jsx-scope": "off",
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
}
私が使用した規則は基本的に推奨される設定をオーバーライドすることです.唯一の追加はESLint pluginです.Note: Again, these are rules that I prefer, you can add the ones that work for you. You can check ESLint configuration docs to create your rules.
.eslintrc.json
に加えます{
"scripts": {
"lint": "eslint \"**/*.{ts,tsx,js,jsx}\"",
"prepare": "husky install",
"test": "react-scripts test"
}
}
JavaScriptの場合:{
"scripts": {
"lint": "eslint \"**/*.{js,jsx}\"",
"prepare": "husky install",
"test": "react-scripts test"
}
}
warning 'temp' is assigned a value but never used @typescript-eslint/no-unused-vars
✖ 1 problem (0 errors, 1 warning)
echo "module.exports = {extends: ['@commitlint/config-conventional']};" > commitlint.config.js
従来の設定はここで使用されます.また、異なるrules of hooksで設定を定義することもできます.package.json
Note: Using Husky with Yarn 2 requires different steps.
npx husky add .husky/pre-commit 'yarn lint && yarn test --watchAll=false'
npx husky add .husky/commit-msg 'npx --no-install commitlint --edit $1'
ハスキーのより具体的なユースケースの場合は、rulesを確認できます.ET Voila、これはあなたがするために必要なすべてです.
単にコミットすることでフックをテストできます.
yarn lint
.端末でこれを見るべきです.⧗ input: foo: this will fail
✖ type must be one of [build, chore, ci, docs, feat, fix, perf, refactor, revert, style, test] [type-enum]
✖ found 1 problems, 0 warnings
ⓘ Get help: https://github.com/conventional-changelog/commitlint/#what-is-commitlint
husky - commit-msg hook exited with code 1 (error)
Note: If you want to skip these hooks, you can commit directly with
-n/--no-verify
option likegit commit -m "yolo!" --no-verify
新しいプロジェクトから起動する場合は、すでに実行しているすべての手順でこれらのreposをクローン化できます.
recipes/ theankurkedia
react-starter-ts-template / theankurkedia
Reference
この問題について(プリティとeslint自動化であなたの反応コードベースをギアアップ), 我々は、より多くの情報をここで見つけました https://dev.to/theankurkedia/gear-up-your-react-codebase-with-prettier-and-eslint-automation-1e16テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol