UNPKG

@cpuchain/eslint

Version:

Common ESLint config for CPUchain projects

89 lines (86 loc) 2.96 kB
import eslint from '@eslint/js'; import type { defineConfig } from 'eslint/config'; import globals from 'globals'; // @ts-expect-error no-types import html from 'eslint-plugin-html'; import { configs as tslintConfigs } from 'typescript-eslint'; //import { flatConfigs as importConfigs } from 'eslint-plugin-import'; import prettierRecommendedConfig from 'eslint-plugin-prettier/recommended'; export type DefineConfigArg = Parameters<typeof defineConfig>[number]; export function getConfig(htmlConfig = false, tsConfig = './tsconfig.json'): DefineConfigArg { return [ htmlConfig ? { files: ['**/*.html'], plugins: { html, }, languageOptions: { parserOptions: { ecmaVersion: 'latest', sourceType: 'script', }, globals: { ...globals.browser, }, }, rules: { indent: ['error', 4], 'linebreak-style': ['error', 'unix'], quotes: ['error', 'single'], semi: ['error', 'always'], }, } : [], { files: ['**/*.js', '**/*.mjs', '**/*.ts', '**/*.tsx'], extends: [eslint.configs.recommended, prettierRecommendedConfig], languageOptions: { parserOptions: { ecmaVersion: 'latest', sourceType: 'module', }, }, rules: { 'prettier/prettier': [ 'error', { tabWidth: 4, printWidth: 110, singleQuote: true, }, ], }, }, { files: ['**/*.ts', '**/*.tsx'], extends: [ ...tslintConfigs.recommended, ...tslintConfigs.stylistic, //importConfigs.recommended, //importConfigs.typescript, ], rules: { //'import/order': ['error'], '@typescript-eslint/no-empty-function': ['off'], '@typescript-eslint/no-unused-expressions': ['off'], '@typescript-eslint/no-unused-vars': ['warn'], }, settings: { /** 'import/resolver': { typescript: { alwaysTryTypes: true, project: tsConfig, }, }, **/ }, languageOptions: { parserOptions: { projectService: true, }, }, }, ]; }