@lionstone-digital/eslint-config
Version:
Helpful eslint config for your projects
83 lines (77 loc) • 1.72 kB
JavaScript
import eslint from '@eslint/js'
import stylistic from '@stylistic/eslint-plugin'
import eslintImportX from 'eslint-plugin-import-x'
import eslintNoRelativeImportPaths from 'eslint-plugin-no-relative-import-paths'
import globals from 'globals'
export default [
// Base
{
languageOptions: {
globals: {
...globals.browser,
...globals.node
},
ecmaVersion: 'latest',
sourceType: 'module'
}
},
{
files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}']
},
{
ignores: ['**/node_modules/**', '**/dist/**', '**/assets/**', '**/*.config.js']
},
// For JavaScript
eslint.configs.recommended,
// For Imports
{
plugins: {
'import-x': eslintImportX
},
settings: {
'import-x/parsers': {
'@typescript-eslint/parser': ['.ts', '.tsx']
},
'import-x/resolver': {
typescript: true,
node: true
}
},
rules: {
'import-x/no-unresolved': 'error'
}
},
{
plugins: {
'no-relative-import-paths': eslintNoRelativeImportPaths
},
rules: {
'no-relative-import-paths/no-relative-import-paths': [
'error',
{
allowSameFolder: true
}
]
}
},
// For Custom Rules
{
rules: {
'no-console': 'error'
}
},
// For Stylistic
{
plugins: {
'@stylistic': stylistic
},
rules: {
'@stylistic/padding-line-between-statements': [
'error',
{ blankLine: 'always', prev: '*', next: 'return' },
{ blankLine: 'always', prev: ['const', 'let', 'var'], next: '*' },
{ blankLine: 'any', prev: ['const', 'let', 'var'], next: ['const', 'let', 'var'] }
]
}
}
]