概要
前回はmonorepo構成を作成した。
この環境を使いやすくするため、monorepo (yarn workspace) で tsconfig や .eslintrc をいい感じに管理するを参考にlintの設定してみた。
eslint公式
+ .vscode
- app
+ src
- .eslintrc.cjs
- packages
- eslint-config-custom
- package.json
- .eslintrc.json
- backend.js
- frontend.js
- lib-a
- .eslint.cjs
+ src
設定ファイル
app/.eslintrc.cjs
module.exports = {
extends: ["@scope/eslint-config-custom/frontend"]
};
packages/lib-a/.eslintrc.cjs
module.exports = {
extends: ["@scope/eslint-config-custom/backend"]
};
packages/eslint-config-custom/frontend.js
module.exports = {
env: { browser: true, es2020: true },
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:react-hooks/recommended",
"eslint-config-turbo",
"prettier",
],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parser: "@typescript-eslint/parser",
plugins: ["react-refresh"],
rules: {
semi: ["error", "always"],
"react-refresh/only-export-components": [
"warn",
{ allowConstantExport: true },
],
},
};
packages/eslint-config-custom/backend.js
module.exports = {
env: { es2020: true },
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"eslint-config-turbo",
"prettier",
],
ignorePatterns: ["dist", ".eslintrc.cjs"],
parser: "@typescript-eslint/parser",
rules: {
semi: ["error", "always"],
},
};
packages/eslint-config-custom/package.json
{
"name": "@scope/eslint-config-custom",
"private": true,
"license": "MIT",
"version": "0.0.0",
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^6.9.1",
"@typescript-eslint/parser": "^6.9.1",
"eslint-config-prettier": "^9.0.0",
"eslint-config-turbo": "^1.10.16",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.4.4"
}
}
混乱したメモ
VscodeでESLintのファイルが見つからないというエラーで首を傾げた。
No ESLint configuration (e.g .eslintrc) found for file: d:\projects\kaminiten\packages\eslint-config-custom\index.js
File will not be validated. Consider running 'eslint --init' in the workspace folder kaminiten
Alternatively you can disable ESLint by executing the 'Disable ESLint' command.
結論
.eslintrcファイルが存在しないのが原因。エラーで言っていることそのままなのだが、eslintの設定をしているフォルダで言われてしまったので混乱した。
ディレクトリ構成は下記。
- .vscode
- settings.json
- packages
- eslint-config-custom
- package.json
- index.js
- lib
- backend.js
このとき、eslint-config-custom/index.jsファイルを開いたときに上記のエラーが出ていた。
vscode用の下記の設定をおこなっていたため、eslintのファイルが見つからないと怒っていた模様。
.vscode/settings.json
{
"eslint.workingDirectories": [{"mode": "auto"}]
}
- .vscode
- settings.json
- packages
- eslint-config-custom
- package.json
+ - .eslintrc.json
- index.js
- lib
- backend.js
.eslintrc.jsonファイルをeslint-config-customフォルダに作成したらエラーは消えた。
.eslintrc.json
{}