UNPKG

@repka-kit/ts

Version:

Next generation build tools for monorepo: lint, bundle and package your TypeScript projects

95 lines (93 loc) 2.26 kB
const { syncEslintConfigHelpers } = require('./eslintConfigHelpers.gen.cjs'); /** * Switch this to `false` if linting takes too long */ const tsEnabled = () => true; module.exports = { env: { es2024: true, }, parser: '@typescript-eslint/parser', parserOptions: tsEnabled() ? { tsconfigRootDir: syncEslintConfigHelpers().monorepoRootPath, project: [ ...syncEslintConfigHelpers().tsConfigGlobs, './tsconfig.eslint.json', ], ecmaVersion: 'latest', sourceType: 'module', EXPERIMENTAL_useSourceOfProjectReferenceRedirect: true, } : { project: null, ecmaVersion: 'latest', sourceType: 'module', }, settings: { 'import/parsers': { '@typescript-eslint/parser': ['.ts', '.tsx', '.d.ts', '.cts', '.mts'], }, 'import/resolver': { typescript: {}, }, }, plugins: [ '@typescript-eslint', 'jest', 'import', 'simple-import-sort', 'unicorn', ], extends: [ 'eslint:recommended', 'plugin:@typescript-eslint/recommended', tsEnabled() && 'plugin:@typescript-eslint/recommended-requiring-type-checking', 'prettier', ].filter(Boolean), rules: { 'simple-import-sort/imports': 'error', 'simple-import-sort/exports': 'error', '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-namespace': [ 'error', { allowDeclarations: true, }, ], 'no-unused-expressions': [ 'error', { allowShortCircuit: true, allowTernary: true, allowTaggedTemplates: true, }, ], '@typescript-eslint/no-unused-vars': [ 'error', { ignoreRestSiblings: true, argsIgnorePattern: '_.*', }, ], ...(tsEnabled() && { '@typescript-eslint/no-unnecessary-condition': [ 'error', { allowConstantLoopConditions: true, }, ], }), 'unicorn/template-indent': [ 'error', { tags: ['line', 'dedent', 'markdown'], functions: ['dedent', 'line', 'markdown'], selectors: [], comments: [], indent: syncEslintConfigHelpers().indent, }, ], }, };