From fa8f1b12cdd58d9a44e288353098310965a6cd78 Mon Sep 17 00:00:00 2001 From: David Anson Date: Wed, 17 Apr 2024 22:34:41 -0700 Subject: [PATCH] Update to ESLint 9's "flat" configuration file format, convert deprecated eslint-plugin-node to eslint-plugin-n. --- .eslintrc.json | 71 ----------------------------------------------- eslint.config.mjs | 39 ++++++++++++++++++++++++++ package.json | 5 ++-- 3 files changed, 42 insertions(+), 73 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 21cfcfe..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "parserOptions": { - "ecmaVersion": 2019, - "sourceType": "script" - }, - "env": { - "node": true, - "es6": true - }, - "plugins": [ - "node", - "unicorn" - ], - "extends": [ - "eslint:all", - "plugin:unicorn/all" - ], - "reportUnusedDisableDirectives": true, - "rules": { - "max-statements": "off", - "multiline-ternary": "off", - "no-magic-numbers": "off", - "no-ternary": "off", - "one-var": "off", - "sort-keys": "off", - - "node/handle-callback-err": "error", - "node/no-callback-literal": "error", - "node/no-exports-assign": "error", - "node/no-extraneous-import": "error", - "node/no-extraneous-require": "error", - "node/no-missing-import": "error", - "node/no-missing-require": "error", - "node/no-new-require": "error", - "node/no-path-concat": "error", - "node/no-process-exit": "error", - "node/no-unpublished-bin": "error", - "node/no-unpublished-import": "error", - "node/no-unpublished-require": "error", - "node/no-unsupported-features/es-builtins": "error", - "node/no-unsupported-features/es-syntax": "error", - "node/no-unsupported-features/node-builtins": "error", - "node/process-exit-as-throw": "error", - "node/shebang": "error", - "node/no-deprecated-api": "error", - "node/callback-return": "error", - "node/exports-style": "error", - "node/file-extension-in-import": "error", - "node/global-require": "error", - "node/no-mixed-requires": "error", - "node/no-process-env": "error", - "node/no-restricted-import": "error", - "node/no-restricted-require": "error", - "node/no-sync": "error", - "node/prefer-global/buffer": "error", - "node/prefer-global/console": "error", - "node/prefer-global/process": "error", - "node/prefer-global/text-decoder": "error", - "node/prefer-global/text-encoder": "error", - "node/prefer-global/url-search-params": "error", - "node/prefer-global/url": "error", - "node/prefer-promises/dns": "error", - "node/prefer-promises/fs": "error", - - "unicorn/no-array-callback-reference": "off", - "unicorn/no-unsafe-regex": "off", - "unicorn/prefer-module": "off", - "unicorn/prefer-top-level-await": "off", - "unicorn/switch-case-braces": ["error", "avoid"] - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..b9d6d40 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,39 @@ +/* eslint-disable n/no-unpublished-import */ + +import js from "@eslint/js"; +import eslintPluginNode from "eslint-plugin-n"; +import eslintPluginUnicorn from "eslint-plugin-unicorn"; + +export default [ + js.configs.all, + eslintPluginNode.configs["flat/recommended"], + eslintPluginUnicorn.configs["flat/all"], + { + "languageOptions": { + "sourceType": "commonjs" + }, + "linterOptions": { + "reportUnusedDisableDirectives": true + }, + "rules": { + "max-statements": "off", + "no-magic-numbers": "off", + "no-ternary": "off", + "one-var": "off", + "sort-imports": "off", + "sort-keys": "off", + + "unicorn/no-array-callback-reference": "off", + "unicorn/prefer-module": "off", + "unicorn/prefer-top-level-await": "off" + } + }, + { + "files": [ + "eslint.config.mjs" + ], + "languageOptions": { + "sourceType": "module" + } + } +]; diff --git a/package.json b/package.json index 95a77c9..96bb3a8 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "build": "ncc build markdownlint-cli2-action.js", "docker-npm-install": "docker run --rm --tty --name npm-install --volume $PWD:/home/workdir --workdir /home/workdir --user node node:16 npm install", "docker-npm-run-upgrade": "docker run --rm --tty --name npm-run-upgrade --volume $PWD:/home/workdir --workdir /home/workdir --user node node:16 npm run upgrade", - "lint": "eslint *.js && markdownlint-cli2 *.md", + "lint": "eslint *.js eslint.config.mjs && markdownlint-cli2 *.md", "test": "npm run lint && npm run build && git diff --exit-code", "upgrade": "npx --yes npm-check-updates --upgrade" }, @@ -28,9 +28,10 @@ "markdownlint-cli2": "0.13.0" }, "devDependencies": { + "@eslint/js": "9.0.0", "@vercel/ncc": "0.38.1", "eslint": "9.0.0", - "eslint-plugin-node": "11.1.0", + "eslint-plugin-n": "17.2.1", "eslint-plugin-unicorn": "52.0.0" } }