代码拉取完成,页面将自动刷新
module.exports = {
root: true, // 启用修复功能
env: {
// 启用浏览器全局变量。
'browser': true,
'es6': true,
// Node.js全局变量和Node.js范围。
'node': true,
// vue3 script中写setup的语法
'vue/setup-compiler-macros': true
},
extends: [
'plugin:vue/vue3-recommended', // Vue官方推荐的默认规则集,适合大多数项目 =》eslint-plugin-vue eslint
'eslint:recommended', // ESLint官方推荐的一套规则集,包含了一些常见的JavaScript问题检查,适用于所有JS项目
'plugin:@typescript-eslint/recommended', // 针对TypeScript代码的一套推荐规则,由TypeScript ESLint团队提供。它可以帮助你捕获一些类型安全问题,并强制实施一些好的TypeScript编码习惯 =》@typescript-eslint/parser
'@vue/typescript/recommended', // 这是一个专门为Vue项目使用TypeScript编写的代码提供的推荐配置,它结合了Vue和TypeScript的最佳实践。 =》@vue/eslint-config-typescript @vue/eslint-config-prettier
'standard', // 格式化标准规范 目前比较流行的 JavaScript 代码规范 =>"eslint-config-standard": "^16.0.0",
'plugin:prettier/recommended' // 新增,必须放在最后面,prettier规则覆盖与eslint冲突的规则 =>eslint-plugin-prettier
// '@vue/eslint-config-typescript', // Vue官方针对使用TypeScript的项目的ESLint配置。
// '@vue/eslint-config-prettier' // 解决ESLint与Prettier之间潜在的样式冲突的配置。
],
overrides: [
{
files: ['*.vue', '*.js', '*.jsx', '*.cjs', '*.mjs', '*.ts', '*.tsx', '*.cts', '*.mts']
}
],
parser: 'vue-eslint-parser',
// 解析器选项
parserOptions: {
// ES的版本 默认是latest 但是我们只需要到es6即可
ecmaVersion: 2020,
// ESLint使用Espree解析器
parser: '@typescript-eslint/parser',
// 指定源代码存在的类型,script或者module,默认为script。
sourceType: 'module',
ecmaFeatures: {
jsx: true // Allows for the parsing of JSX
}
},
// parserOptions: {
// ecmaVersion: 'latest',
// },
plugins: ['vue', '@typescript-eslint'],
// 小程序全局变量
globals: {
uni: true,
wx: true,
WechatMiniprogram: true,
getCurrentPages: true,
getApp: true,
UniApp: true,
UniHelper: true,
App: true,
Page: true,
Component: true,
AnyObject: true
},
rules: {
'vue/no-setup-props-destructure': ['off'],
'vue/no-deprecated-html-element-is': ['off'],
// 'prettier/prettier': 'error',
// "off"或者0 //关闭规则关闭
// "warn"或者1 //在打开的规则作为警告(不影响退出代码)
// "error"或者2 //把规则作为一个错误(退出代码触发时为1)
// 'no-console': import.meta.env.NODE_ENV === 'production' ? 'error' : 'off',
// 'no-debugger': import.meta.env.NODE_ENV === 'production' ? 'error' : 'off',
// @typescript-eslint
'@typescript-eslint/explicit-function-return-type': 'off', // 需要函数和类方法的显式返回类型
'@typescript-eslint/no-empty-function': 'off', // 禁止空函数
'@typescript-eslint/no-use-before-define': 'off', // 在定义之前禁止使用变量
'@typescript-eslint/ban-ts-comment': 'off', // 禁止 @ts-<directive> 使用评论或在指令后要求描述
'@typescript-eslint/no-non-null-assertion': 'off', // '!'不允许使用后缀运算符的非空断言
'@typescript-eslint/explicit-module-boundary-types': 'off', // 需要导出函数和类的公共类方法的显式返回和参数类型
'@typescript-eslint/no-unused-vars': [
'error',
{
argsIgnorePattern: '^_',
varsIgnorePattern: '^_'
}
], // 禁止未使用的变量
// vue
'vue/custom-event-name-casing': 'off', // 为自定义事件名称强制使用特定大小写
'vue/attributes-order': 'off', // 强制执行属性顺序
'vue/one-component-per-file': 'off', // 强制每个组件都应该在自己的文件中
'vue/multiline-html-element-content-newline': 'off', // 在多行元素的内容之前和之后需要换行符
'vue/singleline-html-element-content-newline': 'off', // 在单行元素的内容之前和之后需要换行符
'vue/attribute-hyphenation': 'off', // 对模板中的自定义组件强制执行属性命名样式
'vue/require-default-prop': 'off', // 需要 props 的默认值
'vue/multi-word-component-names': 'off', // 是否开启组件命名规则校验(强制多个单词以驼峰或'-'链接的命名规则)
// ESLint
'no-use-before-define': 'off', // 禁止在变量定义之前使用它们
'@typescript-eslint/ban-types': [
'error', // 禁止使用特定类型
{
types: {
'String': false,
'Boolean': false,
'Number': false,
'Symbol': false,
'{}': false,
'Object': false,
'object': false,
'Function': false
},
extendDefaults: true
}
],
'@typescript-eslint/member-delimiter-style': [
0,
{
// 成员分隔符样式 结尾加分号
multiline: {
delimiter: 'semi',
requireLast: false
},
singleline: {
delimiter: 'semi',
requireLast: false
},
overrides: {
interface: {
multiline: {
delimiter: 'semi',
requireLast: true
}
}
}
}
],
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用该 any 类型
'@typescript-eslint/no-var-requires': 0, // 不允许使用 require 语句,除了在 import 语句中
'@typescript-eslint/keyword-spacing': ['error'], // 关键字间距
// 'arrow-parens': ['error', 'always'], // 箭头函数用小括号括起来
'dot-notation': 'off', // 避免不必要的方括号
'handle-callback-err': [2, '^(err|error)$'], // nodejs 处理错误
'key-spacing': [
// 对象字面量中冒号的前后空格
2,
{
beforeColon: false,
afterColon: true
}
],
'lines-between-class-members': 'off', // 类成员之间的行
'no-duplicate-case': 2, // switch中的case标签不能重复
'no-useless-constructor': 'error', // 没有无用的构造函数
'no-undef': 0,
'number-delimiter-style': 0,
'prefer-const': [
'error',
{
// 首选
destructuring: 'any', // 解构
ignoreReadBeforeAssign: false // 分配前忽略读取
}
],
'quotes': [
// 引号类型
2,
'single',
{
avoidEscape: true,
allowTemplateLiterals: true
}
],
'quote-props': ['error', 'consistent'], // 要求对象字面量属性名称使用引号, 要求对象字面量属性名称使用一致的引号,要么全部用引号,要么都不用
// semi: [1, 'always'],
'space-before-function-paren': [2, { anonymous: 'never', named: 'never' }], // 强制在 function的左括号之前使用一致的空格
'vue/array-bracket-spacing': 'error', // 指定数组的元素之间要以空格隔开(,后面), never参数:[ 之前和 ] 之后不能带空格,always参数:[ 之前和 ] 之后必须带空格
'vue/arrow-spacing': 'error', //= >的前/后括号
'vue/block-spacing': 'error', // 块间距
'vue/brace-style': 'error', // if while function 后面的{必须与if在同一行,java风格。
'vue/camelcase': 'error', // 双峰驼命名格式
'vue/comma-dangle': 'error', // 对象字面量项尾不能有逗号
'vue/component-name-in-template-casing': 'error', // 模板外壳中的组件名称
'vue/eqeqeq': 'error', // 使用 === 替代 ==
'vue/key-spacing': 'error', // 对象字面量中冒号的前后空格
'vue/match-component-file-name': 'error', // 匹配组件文件名
'vue/object-curly-spacing': 0, // 大括号内是否允许不必要的空格
'vue/max-attributes-per-line': 'off', // 强制每行属性的最大数量
'vue/html-closing-bracket-newline': 'off', // 在标签的右括号之前要求或禁止换行
'vue/html-self-closing': 'off', // 执行自闭合的风格
'vue/html-indent': ['error', 2], // 在<template>中强制一致缩进
'vue/no-use-v-if-with-v-for': 0
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。