@ssh/eslint-config
Version:
Slingshot's ESLint configuration for JavaScript, TypeScript, and React projects with ESLint 9 flat config support
69 lines (59 loc) • 2.21 kB
JavaScript
import js from '@eslint/js';
import importPlugin from 'eslint-plugin-import';
import stylisticPlugin from '@stylistic/eslint-plugin';
import { rules as slingshotBaseRules } from './rules/slingshot/base.js';
import { rules as airbnbBestPracticesRules } from './rules/airbnb/best-practices.js';
import { rules as airbnbErrorsRules } from './rules/airbnb/errors.js';
import { rules as airbnbES6Rules } from './rules/airbnb/es6.js';
import { rules as airbnbNodeRules } from './rules/airbnb/node.js';
import { rules as airbnbStrictRules } from './rules/airbnb/strict.js';
import { rules as airbnbStyleRules } from './rules/airbnb/style.js';
import { rules as airbnbVariablesRules } from './rules/airbnb/variables.js';
import { rules as airbnbImportsRules } from './rules/airbnb/imports.js';
// Base flat config for JavaScript/TypeScript projects
const base = [
// Start with ESLint's recommended rules
js.configs.recommended,
// Base JavaScript configuration
{
name: 'ssh_base_config',
languageOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
},
plugins: {
'import': importPlugin,
'@stylistic': stylisticPlugin,
},
rules: {
// Merge base rules from different sources
...airbnbBestPracticesRules,
...airbnbErrorsRules,
...airbnbES6Rules,
...airbnbNodeRules,
...airbnbStrictRules,
...airbnbStyleRules,
...airbnbVariablesRules,
...airbnbImportsRules,
...slingshotBaseRules,
'import/extensions': ['error', 'ignorePackages', {
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
}],
},
settings: {
'import/extensions': ['.js', '.jsx', '.ts', '.tsx'],
'import/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx']
},
'import/resolver': {
node: {
extensions: ['.js', '.jsx', '.ts', '.tsx'],
},
},
},
}
];
export default base;