diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 00000000..775d3ee4 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,20 @@ +name: Lint + +on: + release: + types: [released] + pull_request: + branches: + - main + +jobs: + eslint: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - name: Run ESLint + uses: actions/setup-node@v3 + with: + node-version: 18.x + working-dir: apps/ + - run: npx eslint ./apps/ --config=./apps/backend/eslint.config.js diff --git a/apps/backend/eslint.config.js b/apps/backend/eslint.config.js new file mode 100644 index 00000000..fc3021bc --- /dev/null +++ b/apps/backend/eslint.config.js @@ -0,0 +1,36 @@ +import globals from "globals"; +// https://www.npmjs.com/package/eslint +import pluginJs from "@eslint/js"; +import tseslint from "typescript-eslint"; +import * as nodeDependenciesPlugin from "eslint-plugin-node-dependencies" +import reactPlugin from "eslint-plugin-react"; + +/** @type {import('eslint').Linter.Config[]} */ +export default [ + {files: ["**/*.{js,mjs,cjs,ts}"]}, + {files: ["**/*.js"], languageOptions: {sourceType: "script"}}, + {languageOptions: { globals: globals.browser}}, + // https://eslint.org/docs/latest/rules/ + pluginJs.configs.recommended, + // https://typescript-eslint.io/users/configs/ + // https://typescript-eslint.io/rules/ + ...tseslint.configs.recommended, + // https://www.npmjs.com/package/eslint-plugin-node-dependencies + ...nodeDependenciesPlugin.configs["flat/recommended"], + { + plugins: {globals, reactPlugin }, + ...globals.recommended, + // https://github.com/jsx-eslint/eslint-plugin-react + ...reactPlugin.recommended, + rules: { + "no-unused-vars": "warn", + "no-undef": "error", + "prefer-const": "error", + "no-console": "warn", + "prefer-const": ["error", { ignoreReadBeforeAssign: true }], + eqeqeq: "off", + "no-constant-binary-expression": "error", + }, + ignores: [".node_modules/*"] + } +]; diff --git a/apps/backend/package.json b/apps/backend/package.json index 14b905ed..5b8057d4 100755 --- a/apps/backend/package.json +++ b/apps/backend/package.json @@ -33,6 +33,14 @@ "nodemon": "^3.0.1", "prettier": "^3.1.0", "tslint": "^6.1.3", - "typescript": "^5.3.2" + "typescript": "^5.3.2", + "@eslint/js": "^9.22.0", + "eslint": "^9.22.0", + "eslint-plugin-react": "^7.35.2", + "globals": "^16.0.0", + "typescript-eslint": "^8.26.0", + "eslint-plugin-node-dependencies": "^0.12.0", + "@typescript-eslint/eslint-plugin": "^8.4.0", + "@typescript-eslint/parser": "^8.4.0" } }