Files
tyapi-frontend/eslint.config.js
2025-11-24 16:06:44 +08:00

122 lines
3.6 KiB
JavaScript

import js from '@eslint/js'
import skipFormatting from '@vue/eslint-config-prettier/skip-formatting'
import pluginOxlint from 'eslint-plugin-oxlint'
import pluginVue from 'eslint-plugin-vue'
import { defineConfig, globalIgnores } from 'eslint/config'
import globals from 'globals'
export default defineConfig([
{
name: 'app/files-to-lint',
files: ['**/*.{js,mjs,jsx,vue}'],
},
globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),
{
languageOptions: {
globals: {
...globals.browser,
// 自动引入的全局变量
'ref': 'readonly',
'reactive': 'readonly',
'computed': 'readonly',
'watch': 'readonly',
'watchEffect': 'readonly',
'onMounted': 'readonly',
'onUnmounted': 'readonly',
'onBeforeMount': 'readonly',
'onBeforeUnmount': 'readonly',
'nextTick': 'readonly',
'defineComponent': 'readonly',
'h': 'readonly',
'inject': 'readonly',
'provide': 'readonly',
'toRef': 'readonly',
'toRefs': 'readonly',
'unref': 'readonly',
'isRef': 'readonly',
'isReactive': 'readonly',
'markRaw': 'readonly',
'shallowRef': 'readonly',
'shallowReactive': 'readonly',
'readonly': 'readonly',
'shallowReadonly': 'readonly',
'toRaw': 'readonly',
'customRef': 'readonly',
'triggerRef': 'readonly',
'getCurrentInstance': 'readonly',
'useAttrs': 'readonly',
'useSlots': 'readonly',
'useCssModule': 'readonly',
'useCssVars': 'readonly',
'useId': 'readonly',
'useModel': 'readonly',
'useTemplateRef': 'readonly',
'useLink': 'readonly',
'useRoute': 'readonly',
'useRouter': 'readonly',
'onBeforeRouteLeave': 'readonly',
'onBeforeRouteUpdate': 'readonly',
'defineStore': 'readonly',
'storeToRefs': 'readonly',
'createPinia': 'readonly',
'setActivePinia': 'readonly',
'getActivePinia': 'readonly',
'mapState': 'readonly',
'mapGetters': 'readonly',
'mapActions': 'readonly',
'mapStores': 'readonly',
'mapWritableState': 'readonly',
'ElMessage': 'readonly',
'ElMessageBox': 'readonly',
'ElNotification': 'readonly',
'ElLoading': 'readonly',
'axios': 'readonly',
'dayjs': 'readonly',
'isEmpty': 'readonly',
'isEqual': 'readonly',
'get': 'readonly',
'set': 'readonly',
'omit': 'readonly',
'pick': 'readonly',
'merge': 'readonly',
'uniq': 'readonly',
'uniqBy': 'readonly',
'groupBy': 'readonly',
'keyBy': 'readonly',
'sortBy': 'readonly',
'orderBy': 'readonly',
'filter': 'readonly',
'map': 'readonly',
'reduce': 'readonly',
'find': 'readonly',
'findIndex': 'readonly',
'includes': 'readonly',
'startsWith': 'readonly',
'endsWith': 'readonly',
'camelCase': 'readonly',
'kebabCase': 'readonly',
'snakeCase': 'readonly',
'capitalize': 'readonly',
'upperCase': 'readonly',
'lowerCase': 'readonly',
'trim': 'readonly',
'escape': 'readonly',
'unescape': 'readonly',
},
},
},
js.configs.recommended,
...pluginVue.configs['flat/essential'],
...pluginOxlint.configs['flat/recommended'],
{
rules: {
'vue/multi-word-component-names': 'off',
'no-unused-vars': 'warn',
},
},
skipFormatting,
])