eslint.config.mjs•1.71 kB
import nx from '@nx/eslint-plugin';
import unicorn from 'eslint-plugin-unicorn';
import tseslint from 'typescript-eslint';
export default tseslint.config(
// Base Nx configurations
...nx.configs['flat/base'],
...nx.configs['flat/typescript'],
...nx.configs['flat/javascript'],
// Global ignores
{
ignores: [
'**/dist',
'**/vite.config.*.timestamp*',
'**/vitest.config.*.timestamp*',
'**/mocks/**',
'**/fixtures/**',
'**/__snapshot__/**',
'**/__snapshots__/**',
'**/__tests__/**',
'**/__mocks__/**',
'**/test-fixtures/**',
'**/e2e/fixtures/**',
],
},
// Nx module boundaries and TypeScript rules
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
rules: {
'@nx/enforce-module-boundaries': [
'error',
{
enforceBuildableLibDependency: true,
allow: ['^.*/eslint(\\.base)?\\.config\\.[cm]?js$'],
depConstraints: [
{
sourceTag: '*',
onlyDependOnLibsWithTags: ['*'],
},
],
},
],
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
ignoreRestSiblings: true,
},
],
},
},
// Unicorn plugin rules
{
files: [
'**/*.ts',
'**/*.tsx',
'**/*.cts',
'**/*.mts',
'**/*.js',
'**/*.jsx',
'**/*.cjs',
'**/*.mjs',
],
plugins: {
unicorn: unicorn,
},
rules: {
'unicorn/prefer-top-level-await': 'error',
'unicorn/catch-error-name': ['error', { name: 'ctx' }],
},
},
);