どーも、ぐるたか@guru_takaです。
React Native(TypeScript) に ESLint と Prettier を導入しました。これから React Native の開発環境を整えたい方の参考になれば幸いです!
以下の GitHub リポジトリに ESLint と Prettier を設定した React Native(TypeScript) のスターターキット(Expo 使用)を公開しています。ぜひお使いください!
参考
gurutaka/react-native-ts-starter-kitGitHub
- react:16.13.1
- react-dom:16.13.1
- react-native:SDK-41
目次
ESLint と Prettier を導入する流れ
STEP.1:Prettier の導入
まず Prettier を以下コマンドを実行して、インストールしましょう。
# npm
npm install -D prettier
# yarn
yarn add -D prettier
続いて Prettier によるコード整形のルールを好みに合わせて、package.json
に記述しましょう。私が記述したルールは以下のようになります。
"prettier": {
"trailingComma": "all",
"tabWidth": 2,
"semi": false,
"singleQuote": true,
"printWidth": 80
},
以上で、Prettier の導入と整形ルールの設定が完了になります!
.prettierrc
に設定を書いても OK です!
私は設定ファイルを増やしたくないため、package.json
に記述しています。
STEP.2:ESLint の導入
次は ESLint の導入をします。ここでは初心者向けと上級者向け、2つの方法を紹介します
初心者向け:カスタマイズは最低限で OK な場合
React Native 公式が公開している @react-native-community/eslint-config
を使うと、超簡単に高度な ESLint の設定が可能になります。
参考
@react-native-community/eslint-confignpm
@react-native-community/eslint-config
には、React Native の ESLint 関連で必要なパッケージが丸ごとセットになっています。ESLint で頭を抱える心配もありません!
導入と設定は極めて簡単です。まず、以下コマンドで必要なパッケージをインストールします。
# npm
npm install -D eslint @react-native-community/eslint-config
# yarn
yarn add -D eslint @react-native-community/eslint-config
最後に .eslintrc.json
に以下のルールを記述するだけで、React Native 関係の開発で必要な ESLint のルールが設定できます!
{
"extends": "@react-native-community"
}
@react-native-community/eslint-config
の具体的なルールや 導入されている ESLint 関係のパッケージは、以下リポジトリから確認できます!参考 react-native/index.js at master · facebook/react-nativeGitHub
上級者向け:独自カスタマイズをしたい場合
自身でガッツリ ESLint 周りのルールを構築したい方、ESLint へのこだわりが強い方は、ゼロから ESLint の関連パッケージを導入して設定していきましょう。
私は Prettier と ESLint の競合や非推奨なルールを回避したいため、ESLint 系は自分でカスタマイズをしています。
まず、以下のコマンドを実行して、ESLint 関連のパッケージをインストールしてください。
# npm
npm install -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser \
eslint-config-prettier eslint-plugin-import \
eslint-plugin-jsx-a11y eslint-plugin-react \
eslint-plugin-react-hooks eslint-plugin-react-native
# yarn
yarn add -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser \
eslint-config-prettier eslint-plugin-import \
eslint-plugin-jsx-a11y eslint-plugin-react \
eslint-plugin-react-hooks eslint-plugin-react-native
ESLint の設定ファイル .eslintrc.json
は以下のように設定します。
{
"env": {
"es2021": true,
"node": true,
"react-native/react-native": true
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 2021,
"sourceType": "module"
},
"plugins": ["react-native"],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react/recommended",
"plugin:react-hooks/recommended",
"plugin:jsx-a11y/recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:react-native/all",
// 競合避けるため prettier は最後に読み込み
"prettier"
],
"settings": {
// eslint-plugin-import
// 以下拡張子のモジュールのインポートでエラー出ないように設定
"import/resolver": {
"node": {
"extensions": [".js", ".jsx", ".ts", ".tsx"]
}
},
"import/ignore": ["react-native"],
"react-native/style-sheet-object-names": [
"EStyleSheet",
"OtherStyleSheet",
"PStyleSheet"
]
},
"rules": {
"react/prop-types": "off",
// ルール不要のため削除:公式参照
"import/no-unresolved": "off",
// import の順番をルール化
"import/order": [
"error",
{
"alphabetize": {
"order": "asc"
}
}
]
}
}
基本的には React と TypeScript で必要な ESLint 関係のパッケージをインストール。 加えて、eslint-plugin-react-native
を導入しています。
eslint-plugin-react-native
のルールは、以下ドキュメントを参考にしてみてください!
STEP.3:VS Code の設定
最後に、ファイルを保存した時に、コードを自動で整形するように、VS Code の設定を `.vscode/settings.json` に記述します。
コードは以下の通りです。
{
// デフォルトフォーマットターは Prettier
"editor.defaultFormatter": "esbenp.prettier-vscode",
// ファイル保存時、Prettier で自動フォーマット
"editor.formatOnSave": true,
// タブサイズは 2
"editor.tabSize": 2,
// ファイル保存時、ESLint で自動フォーマット
"editor.codeActionsOnSave": {
"source.fixAll": true
},
"eslint.validate": [
"javascript",
"typescriptreact",
"javascript",
"typescriptreact"
]
}
おまけ:ESLint と Prettier のフォーマットスクリプト
ESLint た Prettier によるコード整形をスクリプトで一気に行いたい時は、以下のスクリプトを package.json
に登録して、ご活用ください!
"scripts": {
"lint:fix": "eslint . --fix --ignore-path .gitignore --ext .js,jsx,.ts,.tsx",
"format": "prettier --write './**/*.{js,jsx,ts,tsx,json}'",
}
最後に
以上で、React Native(TypeScript) に ESLint と Prettier を導入する方法を紹介しました。
開発体験が非常に良くなるので、ぜひ導入してみてください!
以下の GitHub リポジトリに ESLint と Prettier を設定した React Native(TypeScript) のスターターキット(Expo 使用)を公開しています。ぜひお使いください!
参考
gurutaka/react-native-ts-starter-kitGitHub
コメントを残す