eslint-config-regiojet-next
Version:
Eslint Typescript rules for Next.js React projects
74 lines (64 loc) • 2 kB
JavaScript
import nextEslint from '@next/eslint-plugin-next';
import getConfig, {
reactPlugins as baseReactPlugins,
defaultImportExtensions,
defaultImportExtensionsRuleGranularOption,
defaultImportNoExtraneousDependenciesDevDependencies,
defaultImportResolverNodeExtensions,
files,
mapFiles,
perfectionist,
reactConfigs,
reactTsOff,
refresh,
refreshFiles,
tsFiles,
plugins as tsVanillaPlugins,
} from 'eslint-config-regiojet-typescript-react';
import baseDir from './directory.mjs';
import { bestPractices as bestNextPractices, coreWebVitals, ignores } from './rules/index.mjs';
const dineddd = defaultImportNoExtraneousDependenciesDevDependencies;
const diergo = defaultImportExtensionsRuleGranularOption;
const { flatConfig: { recommended: { plugins: allNextPlugins } } } = nextEslint;
const nextPlugin = {
...allNextPlugins['@next/next'],
};
delete nextPlugin.configs;
delete nextPlugin.flatConfig;
export const nextPlugins = {
'@next/next': nextPlugin,
};
export const nextConfigs = [
...bestNextPractices,
...coreWebVitals,
];
export const plugins = {
...tsVanillaPlugins,
...baseReactPlugins,
...nextPlugins,
};
const defaultOptions = {
files,
importExtensions: defaultImportExtensions,
importExtensionsRuleGranularOption: diergo,
importNoExtraneousDependenciesDevDependencies: dineddd,
importResolverNodeExtensions: defaultImportResolverNodeExtensions,
plugins,
tsFiles,
};
const tsConfigs = getConfig(baseDir, defaultOptions);
const reactConfigsWithFiles = mapFiles(reactConfigs, files);
const refreshConfigsWithFiles = mapFiles(refresh, refreshFiles);
const perfectionistWithFiles = mapFiles(perfectionist, files);
const nextConfigsWithFiles = mapFiles(nextConfigs, files);
const offWithFiles = mapFiles(reactTsOff, tsFiles);
const config = [
...tsConfigs,
...reactConfigsWithFiles,
...refreshConfigsWithFiles,
...perfectionistWithFiles,
...nextConfigsWithFiles,
...offWithFiles,
...ignores,
];
export default config;