122 lines
3.6 KiB
JavaScript
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,
|
|
])
|