Skip to content

Commit

Permalink
chore(eslint): migrate to flat config and simplify (#1023)
Browse files Browse the repository at this point in the history
* chore(package.json): update related eslint library, update script for eslint.config.js

* chore(pnpm-lock.yaml): reflect changes in package.json

* chore(eslint): migrate eslint configuration .eslintrc.json to eslint.config.js

* style(tests): remove unused eslint-disable

* chore(eslint): change 'js' to 'mjs'

* chore(package.json): remove '-c eslint.config.js' in 'lint' scripts

* chore(package.json): simplify 'lint' scripts

* chore(eslint): add 'dist/**', 'examples/**', 'website/**' in 'ignores'

* chore(package.json): remove 'globals' library

* chore(pnpm-lock.yaml): reflect changes in package.json

* chore(eslint): remove 'globals' config

* chore(rollup): add 'eslint-disable no-undef'

* chore(eslint): add 'recommended' plugins, sort, and remove unused rules

* chore(eslint): remove duplicate 'languageOptions'

* chore(package.json): add 'eslint-import-resolver-typescript', remove 'eslint-import-resolver-alias'

* chore(pnpm-lock.yaml): reflect changes in package.json

* chore(eslint): simplify settings 'import/resolver'

* chore(eslint): remove 'import/extensions', 'import/parsers' to simplify

* chore(package.json): update eslint and related dependencies

* chore(pnpm-lock.yaml): reflect changes in package.json

* chore(package.json): remove eslint-{config,plugin}-prettier

* chore(pnpm-lock.yaml): reflect changes in package.json

* chore(eslint): simplify 'ignores'

* chore(package.json): add '@eslint/js'

* chore(pnpm-lock.yaml): reflect changes in package.json
  • Loading branch information
sukvvon authored Dec 31, 2024
1 parent 00e8bdc commit c011cd7
Show file tree
Hide file tree
Showing 6 changed files with 1,180 additions and 574 deletions.
130 changes: 0 additions & 130 deletions .eslintrc.json

This file was deleted.

108 changes: 108 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
import eslint from '@eslint/js'
import vitest from '@vitest/eslint-plugin'
import importPlugin from 'eslint-plugin-import'
import jestDom from 'eslint-plugin-jest-dom'
import react from 'eslint-plugin-react'
import reactCompiler from 'eslint-plugin-react-compiler'
import reactHooks from 'eslint-plugin-react-hooks'
import testingLibrary from 'eslint-plugin-testing-library'
import tseslint from 'typescript-eslint'

export default tseslint.config(
{
ignores: ['dist/', 'examples/', 'website/'],
},
eslint.configs.recommended,
importPlugin.flatConfigs.recommended,
tseslint.configs.recommended,
react.configs.flat.recommended,
react.configs.flat['jsx-runtime'],
{
plugins: {
'react-compiler': reactCompiler,
'react-hooks': reactHooks,
},
settings: {
react: {
version: 'detect',
},
'import/resolver': {
typescript: true,
},
},
rules: {
eqeqeq: 'error',
curly: ['warn', 'multi-line', 'consistent'],
'sort-imports': [
'error',
{
ignoreDeclarationSort: true,
},
],
'import/no-unresolved': ['error', { commonjs: true, amd: true }],
'import/named': 'off',
'import/namespace': 'off',
'import/no-named-as-default-member': 'off',
'import/no-duplicates': 'error',
'import/extensions': ['error', 'always'],
'import/order': [
'error',
{
alphabetize: { order: 'asc', caseInsensitive: true },
groups: [
'builtin',
'external',
'internal',
'parent',
'sibling',
'index',
'object',
],
'newlines-between': 'never',
pathGroups: [
{
pattern: 'react',
group: 'builtin',
position: 'before',
},
],
pathGroupsExcludedImportTypes: ['builtin'],
},
],
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': [
'warn',
{ argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
],
'react-compiler/react-compiler': 'warn',
...reactHooks.configs.recommended.rules,
},
},
{
files: ['tests/**/*.{ts,tsx}'],
...testingLibrary.configs['flat/react'],
...jestDom.configs['flat/recommended'],
...vitest.configs.recommended,
rules: {
'import/extensions': ['error', 'never'],
'@typescript-eslint/no-unused-vars': 'off',
'vitest/expect-expect': 'off',
'vitest/consistent-test-it': [
'error',
{ fn: 'it', withinDescribe: 'it' },
],
},
},
{
files: ['src/vanilla/utils/proxyMap.ts', 'src/vanilla/utils/proxySet.ts'],
rules: {
'@typescript-eslint/no-unused-expressions': 'off',
},
},
{
files: ['*.js'],
rules: {
'@typescript-eslint/no-require-imports': 'off',
},
},
)
26 changes: 12 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,11 @@
"build:react_utils": "rollup -c --config-react_utils",
"postbuild": "pnpm patch-d-ts && pnpm copy && pnpm patch-old-ts && pnpm patch-esm-ts",
"prettier": "prettier '*.{js,json,md}' '{src,tests,docs}/**/*.{ts,tsx,md,mdx}' --write",
"eslint": "eslint --no-eslintrc --c .eslintrc.json --fix '*.{js,ts}' '{src,tests}/**/*.{ts,tsx}'",
"eslint": "eslint . --fix",
"test": "pnpm run '/^test:.*/'",
"test:format": "prettier '*.{js,json,md}' '{src,tests,docs}/**/*.{ts,tsx,md,mdx}' --list-different",
"test:types": "tsc --noEmit",
"test:lint": "eslint --no-eslintrc --c .eslintrc.json '*.{js,ts}' '{src,tests}/**/*.{ts,tsx}'",
"test:lint": "eslint .",
"test:spec": "vitest run",
"patch-d-ts": "node -e \"var {entries}=require('./rollup.config.js');require('shelljs').find('dist/**/*.d.ts').forEach(f=>{entries.forEach(({find,replacement})=>require('shelljs').sed('-i',new RegExp(' from \\''+find.source.slice(0,-1)+'\\';$'),' from \\''+replacement+'\\';',f));require('shelljs').sed('-i',/ from '(\\.[^']+)\\.ts';$/,' from \\'\\$1\\';',f)})\"",
"copy": "shx cp -r dist/src/* dist/esm && shx cp -r dist/src/* dist && shx rm -rf dist/{src,tests} && shx cp package.json readme.md LICENSE dist && json -I -f dist/package.json -e \"this.private=false; this.devDependencies=undefined; this.optionalDependencies=undefined; this.scripts=undefined; this.prettier=undefined;\"",
Expand Down Expand Up @@ -106,6 +106,7 @@
"proxy-compare": "^3.0.0"
},
"devDependencies": {
"@eslint/js": "^9.17.0",
"@redux-devtools/extension": "^3.3.0",
"@rollup/plugin-alias": "^5.1.1",
"@rollup/plugin-node-resolve": "^15.3.0",
Expand All @@ -116,22 +117,18 @@
"@types/jsdom": "^21.1.7",
"@types/react": "^18.3.12",
"@types/react-dom": "^18.3.1",
"@typescript-eslint/eslint-plugin": "^8.13.0",
"@typescript-eslint/parser": "^8.13.0",
"@vitest/coverage-v8": "^2.1.4",
"@vitest/eslint-plugin": "^1.1.7",
"@vitest/eslint-plugin": "^1.1.21",
"@vitest/ui": "^2.1.4",
"esbuild": "^0.24.0",
"eslint": "8.57.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint": "9.17.0",
"eslint-import-resolver-typescript": "^3.7.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest-dom": "^5.4.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.37.2",
"eslint-plugin-react-compiler": "19.0.0-beta-8a03594-20241020",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-testing-library": "^6.4.0",
"eslint-plugin-jest-dom": "^5.5.0",
"eslint-plugin-react": "^7.37.3",
"eslint-plugin-react-compiler": "19.0.0-beta-b2e8e9c-20241220",
"eslint-plugin-react-hooks": "^5.1.0",
"eslint-plugin-testing-library": "^7.1.1",
"jest-leak-detector": "^29.7.0",
"jsdom": "^25.0.1",
"json": "^11.0.0",
Expand All @@ -148,6 +145,7 @@
"ts-expect": "^1.3.0",
"tslib": "^2.8.1",
"typescript": "^5.6.3",
"typescript-eslint": "^8.18.2",
"vite": "^5.4.10",
"vitest": "^2.1.4"
},
Expand Down
Loading

0 comments on commit c011cd7

Please # to comment.