Skip to content

Commit

Permalink
Adds linting and husky (pre-initialisation)
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-calo committed Dec 30, 2021
1 parent 5fe5b42 commit 26eff25
Show file tree
Hide file tree
Showing 3 changed files with 887 additions and 29 deletions.
99 changes: 99 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
module.exports = {
root: true,
env: {
node: true,
es6: true,
},
// to enable features such as async/await
parserOptions: {
ecmaVersion: 8,
},
ignorePatterns: [
"node_modules/*",
".next/*",
".out/*",
"!.prettierrc.js",
], // We don"t want to lint generated files nor node_modules, but we
// want to lint .prettierrc.js (ignored by default by eslint)
extends: ["eslint:recommended"],
overrides: [
// This configuration will apply only to TypeScript files
{
files: ["**/*.ts", "**/*.tsx"],
parser: "@typescript-eslint/parser",
settings: { react: { version: "detect" } },
env: {
browser: true,
node: true,
es6: true,
},
extends: [
"eslint:recommended",
"plugin:prettier/recommended", // Prettier plugin
"plugin:@typescript-eslint/recommended", // TypeScript rules
"plugin:react/recommended", // React rules
"plugin:react-hooks/recommended", // React hooks rules
"plugin:jsx-a11y/recommended", // Accessibility rules
],
rules: {
"no-case-declarations": "off",
"no-fallthrough": "off",

// We will use TypeScript"s types for component props instead
"react/prop-types": "off",

// No need to import React when using Next.js
"react/react-in-jsx-scope": "off",

// This rule is not compatible with Next.js"s <Link /> components
"jsx-a11y/anchor-is-valid": "off",

// Includes .prettierrc.js rules
"prettier/prettier": ["error", {}, { usePrettierrc: true }],

// Why would you want unused vars?
"@typescript-eslint/no-unused-vars": ["error"],

// I suggest this setting for requiring return types on functions
// only where useful
"@typescript-eslint/explicit-function-return-type": [
"warn",
{
allowExpressions: true,
allowConciseArrowFunctionExpressionsStartingWithVoid: true,
},
],

"@typescript-eslint/no-explicit-any": "off",
/*
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/no-floating-promises": "error",
"@typescript-eslint/no-for-in-array": "error",
"no-implied-eval": "off",
"@typescript-eslint/no-implied-eval": "error",
"@typescript-eslint/no-misused-promises": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-unsafe-assignment": "error",
"@typescript-eslint/no-unsafe-call": "error",
"@typescript-eslint/no-unsafe-member-access": "error",
"@typescript-eslint/no-unsafe-return": "error",
"@typescript-eslint/prefer-regexp-exec": "error",
"require-await": "off",
"@typescript-eslint/require-await": "error",
"@typescript-eslint/restrict-plus-operands": "error",
"@typescript-eslint/restrict-template-expressions": "error",
"@typescript-eslint/unbound-method": "error",
*/

// Sorting on imports (autofix)
"simple-import-sort/imports": "error",
"simple-import-sort/exports": "error",
"import/first": "error",
"import/newline-after-import": "error",
"import/no-duplicates": "error",
},
// Sorting on imports (autofix)
plugins: ["simple-import-sort", "import"],
},
],
};
35 changes: 31 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,14 @@
"xstate": "^4.20.0"
},
"scripts": {
"start": "react-scripts start",
"build": "DISABLE_ESLINT_PLUGIN=true react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject",
"generate-types": "npx typechain --target=truffle-v5 'src/abis/*.json'"
"generate-types": "npx typechain --target=truffle-v5 'src/abis/*.json'",
"lint": "prettier --check \"./**/*.{js,ts,json,sass,scss,css}\" --loglevel log",
"lint-fix": "prettier --write \"./**/*.{js,ts,json,sass,scss,css}\" --loglevel log",
"prepare": "if [ ! -d '.husky' ]; then husky install; fi",
"start": "react-scripts start",
"test": "react-scripts test"
},
"eslintConfig": {
"extends": "react-app"
Expand All @@ -57,9 +60,33 @@
"@types/chai": "^4.2.17",
"@types/mocha": "^8.2.2",
"@types/node": "^15.0.1",
"prettier": "2.4.1",
"@typescript-eslint/eslint-plugin": "4.18.0",
"@typescript-eslint/parser": "4.18.0",
"eslint": "7.22.0",
"eslint-config-prettier": "8.1.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jsx-a11y": "6.4.1",
"eslint-plugin-prettier": "3.3.1",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-react-hooks": "4.2.0",
"eslint-plugin-simple-import-sort": "7.0.0",
"husky": "^7.0.4",
"prettier": "^2.5.1",
"ts-node": "^9.1.1",
"typechain": "^4.0.3",
"typescript": "^4.2.4"
},
"prettier": {
"printWidth": 75,
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "es5",
"useTabs": false
},
"lint-staged": {
"src/**/*.{js,jsx,ts,tsx,json,css,scss}": [
"prettier --write"
]
}
}
Loading

0 comments on commit 26eff25

Please sign in to comment.