eslint-config-inrupt-react
Eslint and prettier configs
Installation
npm install --save-dev @inrupt/eslint-config-react @rushstack/eslint-patch
Setup (Quick start)
Create a .eslintrc.js
in the the root of your project with the following contents:
require("@rushstack/eslint-patch/modern-module-resolution");
module.exports = {
extends: ["@inrupt/eslint-config-react"],
parserOptions: {
project: "./tsconfig.eslint.json",
},
rules: {},
};
The file tsconfig.eslint.json
is your typescript configuration with the e2e tests, unit tests and examples included, e.g.,
{
"extends": "./tsconfig.json",
"include": ["src/**/*.ts", "e2e/**/*.ts", "*.md"],
"exclude": ["**/node_modules", "**/dist/**"]
}
For typescript projects:
require("@rushstack/eslint-patch/modern-module-resolution");
module.exports = {
root: true,
extends: [
"@inrupt/eslint-config-react",
"@inrupt/eslint-config-lib",
"plugin:import/typescript",
],
parserOptions: {
project: "./tsconfig.eslint.json",
},
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
"import/resolver": {
typescript: {
alwaysTryTypes: true,
project: "./tsconfig.eslint.json",
},
},
},
rules: {
"react/jsx-filename-extension": [
"error",
{
extensions: [".tsx"],
},
],
},
};
Migrating to this configuration:
- Add
extends: ['@inrupt/eslint-config-react']
to your .eslintrc.js
file. - Add the following line to the top of the
.eslintrc.js
file:
require("@rushstack/eslint-patch/modern-module-resolution");
Rules
Exhaustive documentation forthcoming. For now, the general principles are:
- Load a stylistic base set - in this case,
airbnb and
airbnb/hooks
- Load inrupt-base, which loads recommended configs for common libraries: eslint, jest, typescript,
and prettier
- Do very little else- as few custom rules or overrides as possible.
- Some rules are updated to work with nextjs.