Eslint+prettier前端代码规范配置

eslint规则

prettier规则

官网:https://www.prettier.cn/

settings.json文件

setting 配置(ctrl+shift+P打开

setting.json文件分为工作区和用户区,

  1. 工作区:如果只是想改变该项目的配置,就在工作区;
  2. 用户区:如果是想所有项目都用改配置就在用户区添加,用户区添加以后其他电脑登录对应用户也会同步更新的;

vetur

注意:在 vscode 中其实 Vetur 也有一套 Format 规则,因此会和 prettier 冲突。打开 setting-扩展-Vetur 将 Vetur 的规则改成 Prettier 就好了。如果有需要忽略的文件可以在 .eslintignore 文件中进行配置(可以忽略)

配置流程

一、vscode插件商城安装插件

首先安装的代码格式化插件:vetur、ESLint

二、安装依赖

  1. npm i -D eslint babel-eslint eslint-plugin-vue @vue/cli-plugin-eslint
    npm i -D eslint babel-eslint eslint-plugin-vue @vue/cli-plugin-eslint --legacy-peer-deps
    

​ eslint: ESLint 的核心代码
​ babel-eslint: eslint 与 babel 整合包
​ eslint-plugin-vue @vue/cli-plugin-eslint: eslint 与 vue 整合包

  1. npm i -D prettier eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli
    npm i -D prettier eslint-plugin-prettier eslint-config-prettier prettier-eslint-cli --legacy-peer-deps
    

    prettier:prettier 插件的核心代码
    eslint-plugin-prettier:这个插件的主要作用就是将 prettier 作为 ESLint 的规则来使用,相当于代码不符合 Prettier 的标准时,会报一个 ESLint 错误
    eslint-config-prettier:解决 ESLint 中的样式规范和 prettier 中样式规范的冲突,以 prettier 的样式规范为准,使 ESLint 中的样式规范自动失效,本质上这个工具其实就是禁用掉了一些不必要的以及和 Prettier 相冲突的 ESLint 规则。
    prettier-eslint-cli:prettier-eslint-cli 允许多个文件用 prettier-eslint 进行格式化

三、配置eslint(.eslintrc.js)

ESlint配置中各项值的含义:

https://eslint.bootcss.com/docs/user-guide/configuring

  1. parserOptions

    解析器选项。指定你想支持的语言,默认支持es5。指定啥语言,eslint就按照啥语法检查。

  2. parser

    指定要使用的解析器。(parser和parserOptions要同时使用)

  3. processor

    指定插件的处理器。(需要和 plugins 字段配合使用)处理器可以从另一种文件中提取 JavaScript 代码,然后让 ESLint 检测 JavaScript 代码。或者处理器可以在预处理中转换 JavaScript 代码。

  4. environments

    指定代码运行环境。

  5. globals

    定义全局变量。告知 eslint,不必报 no-undef 错误。

  6. rules

    手动自定义代码规范。

    • off 或 0:表示不验证规则。
    • warn 或 1:表示验证规则,当不满足时,给警告。
    • error或 2 :表示验证规则,不满足时报错。
  7. extends

    用于继承某些基础配置。值可以是字符串/数组。值为数组时,每个配置继承它前面的配置。(说白了,就是别人提前写好了一套 rules,你直接拿过来用就行。不用自己一个一个一个的,写 rules 规则。)

ESlint配置

在项目的根目录下,新建.eslintrc.js 或者一键生成npm init @eslint/config文件,将定义的eslint规则拷贝进去

module.exports = {
    // 指定代码的运行环境
    env: {
        browser: true,
        node: true,
        es6: true,
    },
    extends: [
        //继承 vue 的标准特性
        'eslint:recommended',
        'plugin:vue/essential'],
    globals: {
        Atomics: 'readonly',
        SharedArrayBuffer: 'readonly'
    },
    parserOptions: {
        // 定义ESLint的解析器
        parser: "babel-eslint",
        sourceType: "module",
    },
    plugins: ['vue'],
    rules: {
        indent: [
            2,
            2, // 缩进两个
            {
                SwitchCase: 1, // switch case缩进缩进2格(2x1)
                VariableDeclarator: 'first' // const let var 对齐缩进
            }
        ],
        eqeqeq: 2, // 要求使用 === 和 !==
        'lines-around-comment': [
            2,
            {
                beforeBlockComment: true, // 块注释之前空行
                beforeLineComment: false, // 行注释之前空行
                allowBlockStart: true, // 允许注释出现在块语句的开始位置
                allowObjectStart: true, // 允许注释出现在对象字面量的开始位置
                allowArrayStart: true, // 允许注释出现在数组字面量的开始位置
                allowClassStart: true, // 允许注释出现在类的开始位置
                ignorePattern: '#'
            }
        ],
        'spaced-comment': 2, // 注释上的空格,//xxx => // xxx
        'no-whitespace-before-property': 2, // 禁止点调用有空格 a. b => a.b
        'no-multiple-empty-lines': [
            2,
            {
                max: 1, // 连续最大空行数
                maxEOF: 0 // 文件末尾空行数
            }
        ],
        'block-spacing': [2, 'always'], // 代码块空格{return} => { return }
        'arrow-spacing': 2, // 要求箭头函数的箭头部分前后的空格
        quotes: [
            2,
            'single',
            {
                // 允许字符串使用单引号或者双引号,只要字符串中包含了一个其他引号,否则需要转义
                avoidEscape: true,
                // 允许字符串使用反勾号
                allowTemplateLiterals: true
            }
        ],
        'brace-style': 2, // else 与它的大括号同行。
        curly: 2, // if 语句如果包含多个语句则使用大括号。
        'operator-linebreak': 2, // 三元表达式如果是多行,则 ? 和 : 放在各自的行上。
        // 对属性名强制使用驼峰
        camelcase: [2, {
            properties: "always"
        }],
        "no-console": 2,//禁止使用console
        'comma-dangle': 2, // 无多余逗号。
        'no-underscore-dangle': 2// 此规则不允许在标识符中使用悬空下划线。
    }
};

四、配置prettier (.prettierrc.js)(可选)

可配置也可不配置:若不配置在setting.json文件中加入"vetur.format.defaultFormatter.js": "none",即可

//一键格式化
npx prettier --write .

在项目的根目录下,创建.prettierrc.js 文件,定义的prettier规则拷贝进去

module.exports = {
  // 最大长度80个字符
  printWidth: 80,
  // 行末分号
  semi: true,
  // 单引号
  singleQuote: true,
  // JSX双引号
  jsxSingleQuote: false,
  // 尽可能使用尾随逗号(包括函数参数)
  trailingComma: 'none',
  // 在对象文字中打印括号之间的空格。
  bracketSpacing: true,
  // > 标签放在最后一行的末尾,而不是单独放在下一行
  jsxBracketSameLine: false,
  // 缩进
  tabWidth: 2,
  // 使用tab还是空格
  useTabs: false,
  // 行尾换行格式
  endOfLine: 'auto',
  //空格敏感
  HTMLWhitespaceSensitivity: 'ignore',
  extends: [
    //继承 vue 的标准特性
    'plugin:vue/essential',
    'eslint:recommended',
    //避免冲突
    'plugin:prettier/recommended'
  ]
};

五、配置setting.json文件

ctrl+shift+P打开,将配置拷贝进去以后,保存关闭

  //设置vetur默认html代码格式化风格
  "vetur.format.defaultFormatter.html": "prettier",
  // 为ESLint启用“保存时自动修复”,并且仍然具有格式和快速修复功能
  "editor.codeActionsOnSave": {
    "source.fixAll": true,
    "source.fixAll.eslint": true
  },
  "eslint.enable": true,
  "eslint.options": {
    "extensions": [
      ".js",
      ".vue",
      ".ts",
      ".tsx"
    ]
  },
//保存的时候格式化代码
  "editor.formatOnSave": true,
  "eslint.validate": [
    "vue",
    "html",
    "javascript",
    "typescript",
    "javascriptreact",
    "typescriptreact"
  ],

六、配置eslintignore文件(.eslintignore)

需要忽略格式化的文件就放入该文件

node_modules
.vscode
.idea
/public
.eslintrc.js
.DS_Store
/dist
欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » Eslint+prettier前端代码规范配置

提供最优质的资源集合

立即查看 了解详情