跳到主要内容

配置工具

eslint/prettier​

注意:

  • ESLint 目前只能处理 CommonJS 格式的配置文件

    • 参考: https://juejin.cn/post/7244070072787501112

    • package.json 文件中定义了 "type": "module",这使得Node.js将所有 .js 文件都视为 ES 模块

      • 可能会导致eslint失效
    • 要解决这个问题,有以下几种方法:

      • 重命名配置文件:将 .eslintrc.js 文件重命名为 .eslintrc.cjs。
      • 改变 package.json 文件中的 type 属性:可以在 package.json 文件中将 "type": "module" 更改为 "type": "commonjs",使得 Node.js 将所有 .js 文件视为 CommonJS 模块。但是这会影响到项目中的所有 .js 文件,可能会带来其他问题

vue​

  • eslint
bash
eslint
@typescript-eslint/eslint-plugin
@typescript-eslint/parser
eslint-config-prettier
eslint-plugin-prettier
eslint-plugin-vue
  • prettier
text
prettier
  • vite
    • vite-plugin-eslint 是一个用于在Vite 构建过程中集成ESLint 检查的插件。 它可以帮助您在开发过程中检查代码是否符合ESLint 规则,并在控制台输出错误或警告信息
text
vite-plugin-eslint

.eslintrc.cjs​

js
module.exports = {
root: true,
env: {
browser: true,
node: true,
commonjs: true,
es6: true,
amd: true,
},
// 指定如何解析语法
parser: 'vue-eslint-parser',
// 优先级低于 parse 的语法解析配置
parserOptions: {
parser: '@typescript-eslint/parser',
ecmaVersion: 'latest',
sourceType: 'module',
jsxPragma: 'React',
ecmaFeatures: {
jsx: true,
},
},
// 继承某些已有的规则
extends: [
'plugin:vue/vue3-recommended',
'plugin:@typescript-eslint/recommended',
'prettier',
'plugin:prettier/recommended',
],
plugins: ['prettier'],
/**
* "off" 或 0 ==> 关闭规则
* "warn" 或 1 ==> 打开的规则作为警告(不影响代码执行)
* "error" 或 2 ==> 规则作为一个错误(代码不能执行,界面报错)
*/
rules: {
// eslint (http://eslint.cn/docs/rules)
'no-var': 'error', // 要求使用 let 或 const 而不是 var
'no-multiple-empty-lines': ['error', { max: 1 }], // 不允许多个空行
'prefer-const': 'off', // 使用 let 关键字声明但在初始分配后从未重新分配的变量,要求使用 const
'no-use-before-define': 'off', // 禁止在 函数/类/变量 定义之前使用它们

// typeScript (https://typescript-eslint.io/rules)
'@typescript-eslint/no-unused-vars': 'error', // 禁止定义未使用的变量
'@typescript-eslint/no-empty-function': 'error', // 禁止空函数
'@typescript-eslint/prefer-ts-expect-error': 'error', // 禁止使用 @ts-ignore
'@typescript-eslint/ban-ts-comment': 'error', // 禁止 @ts-<directive> 使用注释或要求在指令后进行描述
'@typescript-eslint/no-inferrable-types': 'off', // 可以轻松推断的显式类型可能会增加不必要的冗长
'@typescript-eslint/no-namespace': 'off', // 禁止使用自定义 TypeScript 模块和命名空间
'@typescript-eslint/no-explicit-any': 'off', // 禁止使用 any 类型
'@typescript-eslint/ban-types': 'off', // 禁止使用特定类型
'@typescript-eslint/no-var-requires': 'off', // 允许使用 require() 函数导入模块
'@typescript-eslint/no-non-null-assertion': 'off', // 不允许使用后缀运算符的非空断言(!)

// vue (https://eslint.vuejs.org/rules)
'vue/script-setup-uses-vars': 'error', // 防止<script setup>使用的变量<template>被标记为未使用,此规则仅在启用该 no-unused-vars 规则时有效
'vue/v-slot-style': 'error', // 强制执行 v-slot 指令样式
'vue/no-mutating-props': 'error', // 不允许改变组件 prop
'vue/custom-event-name-casing': 'error', // 为自定义事件名称强制使用特定大小写
'vue/html-closing-bracket-newline': 'error', // 在标签的右括号之前要求或禁止换行
'vue/attribute-hyphenation': 'error', // 对模板中的自定义组件强制执行属性命名样式:my-prop="prop"
'vue/attributes-order': 'off', // vue api使用顺序,强制执行属性顺序
'vue/no-v-html': 'off', // 禁止使用 v-html
'vue/require-default-prop': 'off', // 此规则要求为每个 prop 为必填时,必须提供默认值
'vue/multi-word-component-names': 'off', // 要求组件名称始终为 “-” 链接的单词
'vue/no-setup-props-destructure': 'off', // 禁止解构 props 传递给 setup
'vue/component-name-in-template-casing': [
// vue组件转换短横线
'error',
'kebab-case',
{
registeredComponentsOnly: false,
ignores: [],
},
],
},
};

.prettierrc.cjs​

js
module.exports = {
tabWidth: 2,
semi: true,
singleQuote: true,
jsxSingleQuote:true,
endOfLine: 'auto',
printWidth: 80,
};

react​