Skip to content

Commit

Permalink
Merge pull request #5 from alexey-koran/develop
Browse files Browse the repository at this point in the history
0.2.0
  • Loading branch information
alexey-koran authored Oct 7, 2024
2 parents 7810a77 + 1aa8ab9 commit 7941022
Show file tree
Hide file tree
Showing 9 changed files with 324 additions and 336 deletions.
19 changes: 9 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,26 +50,25 @@ pnpm i -D @alexey-koran/eslint-config
| Package name | Description | Version |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| | | |
| eslint | configurable JavaScript linter | [v9.9.\*](https://eslint.org/) |
| typescript-eslint | enables ESLint and Prettier to support [TypeScript](https://www.typescriptlang.org/) | [v8.4.\*](https://typescript-eslint.io/) |
| eslint | configurable JavaScript linter | [v9.12.\*](https://eslint.org/) |
| typescript-eslint | enables ESLint and Prettier to support [TypeScript](https://www.typescriptlang.org/) | [v8.8.\*](https://typescript-eslint.io/) |
| | `Configs` | |
| eslint-config-prettier | turns off all rules that are unnecessary or might conflict with [Prettier](https://github.com/prettier/prettier) | [v9.1.\*](https://github.com/prettier/eslint-config-prettier) |
| | `Plugins` | |
| @eslint/js | ESLint JavaScript plugin Separating out JavaScript-specific functionality from ESLint | [v9.9.\*](https://www.npmjs.com/package/@eslint/js) |
| eslint-plugin-import | intends to support linting of ES2015+ (ES6+) import/export syntax, prevent issues with misspelling of file paths and import names | [v2.30.\*](https://github.com/import-js/eslint-plugin-import) |
| @eslint/js | ESLint JavaScript plugin Separating out JavaScript-specific functionality from ESLint | [v9.12.\*](https://www.npmjs.com/package/@eslint/js) |
| eslint-plugin-import | intends to support linting of ES2015+ (ES6+) import/export syntax, prevent issues with misspelling of file paths and import names | [v2.31.\*](https://github.com/import-js/eslint-plugin-import) |
| eslint-import-resolver-typescript | adds [TypeScript](https://www.typescriptlang.org/) support to [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) | [v3.6.\*](https://github.com/import-js/eslint-import-resolver-typescript) |
| eslint-import-resolver-webpack | webpack-literate module resolution plugin for [eslint-plugin-import](https://www.npmjs.com/package/eslint-plugin-import) | [v0.13.\*](https://www.npmjs.com/package/eslint-import-resolver-webpack) |
| eslint-plugin-jsx-a11y | static AST checker for accessibility rules on JSX elements | [v6.10.\*](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) |
| eslint-plugin-prettier | runs [Prettier](https://github.com/prettier/prettier) as an ESLint rule and reports differences as individual ESLint issues | [v5.2.\*](https://github.com/prettier/eslint-plugin-prettier) |
| eslint-plugin-react | React specific linting rules for ESLint | [v7.35.\*](https://github.com/jsx-eslint/eslint-plugin-react) |
| eslint-plugin-react | React specific linting rules for ESLint | [v7.37.\*](https://github.com/jsx-eslint/eslint-plugin-react) |
| eslint-plugin-react-hooks | enforces the [Rules of Hooks](https://react.dev/reference/rules/rules-of-hooks) | [v5.1.\*-rc](https://www.npmjs.com/package/eslint-plugin-react-hooks) |
| @stylistic/eslint-plugin-js | JavaScript stylistic rules for ESLint | [v2.7.\*](https://www.npmjs.com/package/@stylistic/eslint-plugin-js) |
| @stylistic/eslint-plugin-jsx | [JSX](https://react.dev/learn/writing-markup-with-jsx) stylistic rules for ESLint | [v2.7.\*](https://www.npmjs.com/package/@stylistic/eslint-plugin-jsx) |
| @stylistic/eslint-plugin-ts | [TypeScript](https://www.typescriptlang.org/) stylistic rules for ESLint | [v2.7.\*](https://www.npmjs.com/package/@stylistic/eslint-plugin-ts) |
| @stylistic/eslint-plugin-js | JavaScript stylistic rules for ESLint | [v2.9.\*](https://www.npmjs.com/package/@stylistic/eslint-plugin-js) |
| @stylistic/eslint-plugin-jsx | [JSX](https://react.dev/learn/writing-markup-with-jsx) stylistic rules for ESLint | [v2.9.\*](https://www.npmjs.com/package/@stylistic/eslint-plugin-jsx) |
| @stylistic/eslint-plugin-ts | [TypeScript](https://www.typescriptlang.org/) stylistic rules for ESLint | [v2.9.\*](https://www.npmjs.com/package/@stylistic/eslint-plugin-ts) |
| | | |
| | `Other` | |
| globals | global identifiers from different JavaScript environments | [v15.9.\*](https://github.com/sindresorhus/globals) |
| @eslint/compat | ESLint compatibility utilities | [v1.1.\*](https://github.com/eslint/rewrite) |
| globals | global identifiers from different JavaScript environments | [v15.10.\*](https://github.com/sindresorhus/globals) |
| | | |

| Package name | Description | Version |
Expand Down
18 changes: 4 additions & 14 deletions configs/base.mjs
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
import { fixupPluginRules } from '@eslint/compat';
import stylisticJS from '@stylistic/eslint-plugin-js';
import pluginImport from 'eslint-plugin-import';
import pluginImportConfig from 'eslint-plugin-import/config/recommended.js';
import importPlugin from 'eslint-plugin-import';
import importConfig from 'eslint-plugin-import/config/recommended.js';
import prettierPlugin from 'eslint-plugin-prettier';
import prettierConfig from 'eslint-plugin-prettier/recommended';
import typescriptEslint from 'typescript-eslint';

import { importRules } from '../rules/import.mjs';
import { jsRules } from '../rules/js.mjs';
import { stylisticRules } from '../rules/stylistic.mjs';
import { supportedFileTypes } from '../utils/fileTypes.mjs';

export const baseConfig = {
Expand All @@ -24,18 +20,12 @@ export const baseConfig = {
reportUnusedDisableDirectives: 'error',
},
plugins: {
// TODO: Remove after eslint-plugin-import update
// fixupPluginRules wraps each rule in the given plugin using fixupRule()
// and returns a new object that represents the plugin with the fixed-up rules
import: fixupPluginRules(pluginImport),
import: importPlugin,
prettier: prettierPlugin,
'@stylistic/js': stylisticJS,
},
rules: {
...prettierConfig.rules,
...pluginImportConfig.rules,
...jsRules,
...importConfig.rules,
...importRules,
...stylisticRules.js,
},
};
8 changes: 8 additions & 0 deletions configs/js.mjs
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
import eslint from '@eslint/js';
import stylisticJSPlugin from '@stylistic/eslint-plugin-js';

import { jsRules } from '../rules/js.mjs';
import { stylisticRules } from '../rules/stylistic.mjs';
import { supportedFileTypes } from '../utils/fileTypes.mjs';

export const javaScriptConfig = {
files: [supportedFileTypes.js],
plugins: {
'@stylistic/js': stylisticJSPlugin,
},
rules: {
...eslint.configs.recommended.rules,
...stylisticRules.js,
...jsRules,
},
};
4 changes: 2 additions & 2 deletions configs/react.mjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import reactPlugin from 'eslint-plugin-react';
import reactHooks from 'eslint-plugin-react-hooks';

import stylisticJSX from '@stylistic/eslint-plugin-jsx';
import stylisticJSXPlugin from '@stylistic/eslint-plugin-jsx';
import reactAccessibility from 'eslint-plugin-jsx-a11y';
import globals from 'globals';
import typescriptEslint from 'typescript-eslint';
Expand Down Expand Up @@ -35,7 +35,7 @@ export const reactConfig = {
'jsx-a11y': reactAccessibility,
react: reactPlugin,
'react-hooks': reactHooks,
'@stylistic/jsx': stylisticJSX,
'@stylistic/jsx': stylisticJSXPlugin,
},
rules: {
...reactAccessibility.configs.recommended.rules,
Expand Down
4 changes: 2 additions & 2 deletions configs/ts.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import stylisticTS from '@stylistic/eslint-plugin-ts';
import stylisticTSPlugin from '@stylistic/eslint-plugin-ts';
import typescriptEslint from 'typescript-eslint';

import { stylisticRules } from '../rules/stylistic.mjs';
Expand All @@ -18,7 +18,7 @@ export const typeScriptConfig = {
},
plugins: {
'@typescript-eslint': typescriptEslint.plugin,
'@stylistic/ts': stylisticTS,
'@stylistic/ts': stylisticTSPlugin,
},
rules: {
...typescriptEslint.configs['strictTypeChecked'].rules,
Expand Down
7 changes: 4 additions & 3 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { shareableConfig } from './config.mjs';
import { baseConfig } from './configs/base.mjs';
import { javaScriptConfig } from './configs/js.mjs';
import { supportedExtensions } from './utils/extensions.mjs';
import { supportedFileTypes } from './utils/fileTypes.mjs';

const config = [
...shareableConfig,
baseConfig,
javaScriptConfig,
{
files: [supportedFileTypes.js],
settings: {
'import/ignore': 'node_modules', // Temporary fix https://github.com/typescript-eslint/typescript-eslint/issues/9450
'import/extensions': supportedExtensions.js,
'import/parsers': {
'@typescript-eslint/parser': [...supportedExtensions.ts, ...supportedExtensions.tsx],
Expand Down
21 changes: 10 additions & 11 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,20 @@
},
"homepage": "https://github.com/alexey-koran/eslint-config#readme",
"dependencies": {
"@eslint/compat": "^1.1.1",
"@eslint/js": "^9.9.1",
"@stylistic/eslint-plugin-js": "^2.7.2",
"@stylistic/eslint-plugin-jsx": "^2.7.2",
"@stylistic/eslint-plugin-ts": "^2.7.2",
"eslint": "^9.9.1",
"@eslint/js": "^9.12.0",
"@stylistic/eslint-plugin-js": "^2.9.0",
"@stylistic/eslint-plugin-jsx": "^2.9.0",
"@stylistic/eslint-plugin-ts": "^2.9.0",
"eslint": "^9.12.0",
"eslint-config-prettier": "^9.1.0",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jsx-a11y": "^6.10.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-react": "^7.35.2",
"eslint-plugin-react-hooks": "5.1.0-rc-a19a8ab4-20240829",
"globals": "^15.9.0",
"typescript-eslint": "^8.4.0"
"eslint-plugin-react": "^7.37.1",
"eslint-plugin-react-hooks": "5.1.0-rc-1460d67c-20241003",
"globals": "^15.10.0",
"typescript-eslint": "^8.8.1"
},
"devDependencies": {
"@alexey-koran/prettier-config": "^0.1.1",
Expand Down
Loading

0 comments on commit 7941022

Please sign in to comment.