10/3/24
This commit is contained in:
180
eslint.config.js
180
eslint.config.js
@@ -1,12 +1,93 @@
|
||||
import pluginVue from 'eslint-plugin-vue';
|
||||
import pluginTypeScript from 'typescript-eslint';
|
||||
import pluginPrettier from 'eslint-plugin-prettier/recommended';
|
||||
import parserVue from 'vue-eslint-parser';
|
||||
import * as parserJavaScript from 'espree';
|
||||
import vuePlugin from 'eslint-plugin-vue';
|
||||
import typeScriptEslintPlugin from '@typescript-eslint/eslint-plugin';
|
||||
import typeScriptEslintParser from '@typescript-eslint/parser';
|
||||
import prettierConfig from 'eslint-config-prettier';
|
||||
import prettierPlugin from 'eslint-plugin-prettier'
|
||||
import vueParser from 'vue-eslint-parser';
|
||||
import * as javaScriptParser from 'espree';
|
||||
|
||||
const basicRules = {
|
||||
"prettier/prettier": "warn",
|
||||
"no-unused-vars": "warn",
|
||||
"no-unused-expressions": "error",
|
||||
"no-lonely-if": "error",
|
||||
"no-const-assign": "error",
|
||||
"no-magic-numbers": ["error",
|
||||
{
|
||||
"ignoreArrayIndexes": true,
|
||||
"ignoreClassFieldInitialValues": true,
|
||||
"enforceConst": true,
|
||||
"ignore": [0]
|
||||
}
|
||||
],
|
||||
"dot-notation": "error",
|
||||
"default-case-last": "error",
|
||||
"default-param-last": "error",
|
||||
"default-case": "warn",
|
||||
"eqeqeq": "error",
|
||||
"func-style": [
|
||||
"error",
|
||||
"declaration",
|
||||
{
|
||||
"allowArrowFunctions": true,
|
||||
"overrides": {
|
||||
"namedExports": "ignore"
|
||||
}
|
||||
}
|
||||
],
|
||||
"max-params": [
|
||||
"error",
|
||||
5
|
||||
],
|
||||
"max-depth": [
|
||||
"error",
|
||||
3
|
||||
],
|
||||
"no-console": "warn"
|
||||
};
|
||||
|
||||
const typeScriptRules = {
|
||||
...prettierConfig.rules,
|
||||
"@typescript-eslint/no-array-constructor": "error",
|
||||
"@typescript-eslint/no-unsafe-assignment": "error",
|
||||
"@typescript-eslint/no-unsafe-call": "error",
|
||||
"@typescript-eslint/no-unsafe-function-type": "error",
|
||||
"@typescript-eslint/no-unsafe-declaration-merging": "error",
|
||||
"@typescript-eslint/no-unsafe-enum-comparison": "error",
|
||||
"@typescript-eslint/no-unsafe-member-access": "error",
|
||||
"@typescript-eslint/no-unsafe-return": "error",
|
||||
"@typescript-eslint/no-unsafe-unary-minus": "error",
|
||||
"@typescript-eslint/consistent-type-exports": "error",
|
||||
"@typescript-eslint/no-unnecessary-condition": "error",
|
||||
"@typescript-eslint/no-unnecessary-boolean-literal-compare": "error",
|
||||
"@typescript-eslint/promise-function-async": [
|
||||
"error",
|
||||
{
|
||||
"allowAny": true,
|
||||
}
|
||||
],
|
||||
"@typescript-eslint/no-require-imports": "error"
|
||||
};
|
||||
|
||||
const vueRuels = {
|
||||
"vue/html-indent": [
|
||||
"error",
|
||||
4,
|
||||
{
|
||||
"baseIndent": 1,
|
||||
}
|
||||
],
|
||||
"vue/max-props": [
|
||||
"error",
|
||||
{
|
||||
maxProps: 5
|
||||
}
|
||||
],
|
||||
"vue/multi-word-component-names": "off"
|
||||
};
|
||||
|
||||
export default [
|
||||
...pluginVue.configs['flat/essential'],
|
||||
pluginPrettier,
|
||||
...vuePlugin.configs['flat/essential'],
|
||||
{
|
||||
files: ["**/*.vue"],
|
||||
ignores: [
|
||||
@@ -16,73 +97,40 @@ export default [
|
||||
"public/*"
|
||||
],
|
||||
plugins: {
|
||||
'@typescript-eslint': pluginTypeScript.plugin
|
||||
'vue': vuePlugin,
|
||||
'prettier': prettierPlugin
|
||||
},
|
||||
languageOptions: {
|
||||
parser: parserVue,
|
||||
parser: vueParser,
|
||||
parserOptions: {
|
||||
parser: {
|
||||
js: parserJavaScript,
|
||||
ts: pluginTypeScript.parser
|
||||
js: javaScriptParser,
|
||||
ts: typeScriptEslintParser
|
||||
}
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
"no-unused-vars": "error",
|
||||
"no-unused-expressions": "error",
|
||||
"no-lonely-if": "error",
|
||||
"no-const-assign": "error",
|
||||
"dot-notation": "error",
|
||||
"no-undef": "error",
|
||||
"default-case-last": "error",
|
||||
"default-param-last": "error",
|
||||
"default-case": "warn",
|
||||
"eqeqeq": "error",
|
||||
"func-style": [
|
||||
"error",
|
||||
"declaration",
|
||||
{
|
||||
"allowArrowFunctions": true,
|
||||
"overrides": {
|
||||
"namedExports": "ignore"
|
||||
}
|
||||
}
|
||||
],
|
||||
"max-params": [
|
||||
"error",
|
||||
3
|
||||
],
|
||||
"max-depth": [
|
||||
"error",
|
||||
3
|
||||
],
|
||||
"no-console": "warn",
|
||||
|
||||
"vue/html-indent": [
|
||||
"error",
|
||||
4,
|
||||
{
|
||||
"baseIndent": 1,
|
||||
}
|
||||
],
|
||||
"vue/max-props": [
|
||||
"error",
|
||||
{
|
||||
maxProps: 5
|
||||
}
|
||||
],
|
||||
"vue/multi-word-component-names": "off",
|
||||
|
||||
// "@typescript-eslint/no-array-constructor": "error",
|
||||
// "@typescript-eslint/no-unsafe-assignment": "error",
|
||||
// "@typescript-eslint/no-unsafe-call": "error",
|
||||
// "@typescript-eslint/no-unsafe-function-type": "error",
|
||||
// "@typescript-eslint/no-unsafe-declaration-merging": "error",
|
||||
// "@typescript-eslint/no-unsafe-enum-comparison": "error",
|
||||
// "@typescript-eslint/no-unsafe-member-access": "error",
|
||||
// "@typescript-eslint/no-unsafe-return": "error",
|
||||
// "@typescript-eslint/no-unsafe-unary-minus": "error",
|
||||
|
||||
...basicRules,
|
||||
...vueRuels
|
||||
}
|
||||
},
|
||||
{
|
||||
files: ["composables/*.ts", "utils/*.ts", "server/**/*.ts"],
|
||||
plugins: {
|
||||
'@typescript-eslint': typeScriptEslintPlugin,
|
||||
'prettier': prettierPlugin
|
||||
},
|
||||
languageOptions: {
|
||||
parser: typeScriptEslintParser,
|
||||
parserOptions: {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
project: true
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
...basicRules,
|
||||
...typeScriptRules
|
||||
}
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user