65 lines
2.2 KiB
JavaScript
65 lines
2.2 KiB
JavaScript
import globals from "globals";
|
|
import pluginJs from "@eslint/js";
|
|
import tseslint from "typescript-eslint";
|
|
import pluginVue from "eslint-plugin-vue";
|
|
import {fileURLToPath} from "node:url";
|
|
import {dirname, resolve} from "path";
|
|
import {readFileSync} from "node:fs";
|
|
import vueI18n from '@intlify/eslint-plugin-vue-i18n';
|
|
// 动态读取 .eslintrc-auto-import.json 文件内容
|
|
const autoImportConfig = JSON.parse(
|
|
readFileSync(
|
|
resolve(dirname(fileURLToPath(import.meta.url)), ".eslintrc-auto-import.json"),
|
|
"utf-8",
|
|
),
|
|
);
|
|
|
|
export default [
|
|
...vueI18n.configs['flat/recommended'],
|
|
{files: ["**/*.{js,mjs,cjs,ts,vue}"]},
|
|
{languageOptions: {globals: {...globals.browser, ...globals.node, ...autoImportConfig.globals}}},
|
|
pluginJs.configs.recommended,
|
|
...tseslint.configs.recommended,
|
|
...pluginVue.configs["flat/essential"],
|
|
{files: ["**/*.vue"], languageOptions: {parserOptions: {parser: tseslint.parser}}},
|
|
{
|
|
rules: {
|
|
semi: "error",
|
|
"@typescript-eslint/no-explicit-any": "off",
|
|
"vue/multi-word-component-names": "off",
|
|
"@typescript-eslint/no-unused-vars": [
|
|
"error",
|
|
{
|
|
"args": "all",
|
|
"argsIgnorePattern": "^_",
|
|
"caughtErrors": "all",
|
|
"caughtErrorsIgnorePattern": "^_",
|
|
"destructuredArrayIgnorePattern": "^_",
|
|
"varsIgnorePattern": "^_",
|
|
"ignoreRestSiblings": true
|
|
}
|
|
],
|
|
'@intlify/vue-i18n/no-dynamic-keys': 'error',
|
|
'@intlify/vue-i18n/no-unused-keys': [
|
|
'error',
|
|
{
|
|
extensions: ['.ts', '.vue']
|
|
}
|
|
],
|
|
"@intlify/vue-i18n/no-duplicate-keys-in-locale": [
|
|
"error",
|
|
{
|
|
"ignoreI18nBlock": false
|
|
}
|
|
],
|
|
"@intlify/vue-i18n/no-raw-text": 'off',
|
|
},
|
|
settings: {
|
|
'vue-i18n': {
|
|
localeDir: '/src/locales/language/*.{ts}',
|
|
messageSyntaxVersion: '^9.0.0'
|
|
}
|
|
}
|
|
}
|
|
];
|