zoukankan      html  css  js  c++  java
  • vs Code + Eslint + Prettier 代码格式化

    一、什么是Eslint

       通过查看eslint官网(官网传送门),我们就可以知道,eslint就是一个用来识别 ECMAScript/JavaScript 并且按照规则给出报告的代码检测工具,主要用来检测代码风格是不是符合指定的规则/规范,这样有利于团队开发的时候代码风格统一,.毕竟每个人的代码风格不一致,使用eslint代码校验工具就保证了代码风格的统一性。

    二、什么Prettier

      通过查看prettier官网(官网传送门),我们就知道,prettier是一个代码格式化工具,包括JavaScript (including experimental features)、JSX、Angular、Vue、Flow、TypeScript、CSS, Less, and SCSS、HTML、JSON、GraphQL、Markdown, including GFM and MDX、YAML各种语言,简而言之,这个工具能够使输出代码保持风格一致。

    三、vs Code安装相关插件

      在这里我默认你已经安装好了vs Code,如果还没有安装后者不知道怎么安装也没关系,可以查看安装vs Code的其他博客,我这里不在赘述。vs Code安装好之后,这里要介绍几个常用的插件,可以灵活使用,以方便使用提高效率为原则。

      1、Vetur:  vue语法高亮插件;

      2、ESlint 语法错误检测工具;

      3、HTML Snippets 回车或按下Tab键生成标签;

      4、Auto Rename Tag 自动修改匹配的标签;

      5、prettier 代码格式化工具;

    四、vs Code格式化相关配置

      vs Code格式化插件有很多,这里首推prettier,可以根据自己的需求进行配置,并且设置format on save,就会在代码格式化的时候自动保存

    {
        "vetur.format.defaultFormatter.html": "js-beautify-html",
        "vetur.format.defaultFormatterOptions": {
            "js-beautify-html": {
                "wrap_line_length": 200,
                "wrap_attributes": "auto",
                "end_with_newline": false
            }
        },//函数前加空格
        "javascript.format.insertSpaceBeforeFunctionParenthesis": true,
        "vetur.format.defaultFormatter.js": "vscode-typescript",
        "eslint.alwaysShowStatus": true,
        "eslint.autoFixOnSave": true,
        "eslint.workingDirectories": [
            ".eslintrc.js",
            {
                "mode": "auto"
            }
        ],
        "eslint.validate": [
            "javascript",
            "javascriptreact",
            { "language": "vue", "autoFix": true }
        ],
        "[javascript]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.fixAll.eslint": true
        },
        "[vue]": {
            "editor.defaultFormatter": "esbenp.prettier-vscode"
        },
        //默认JavaScript格式化程序(为了更美观)
        "javascript.format.enable": true,
    "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },

    "[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },

    "[less]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },

    "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },

    /* prettier的配置 */

    "prettier.printWidth": 100, // 超过最大值换行

    "prettier.tabWidth": 4, // 缩进字节数

    "prettier.useTabs": false, // 缩进不使用tab,使用空格

    "prettier.semi": true, // 句尾添加分号

    "prettier.singleQuote": true, // 使用单引号代替双引号

    "prettier.proseWrap": "preserve", // 默认值。因为使用了一些折行敏感型的渲染器(如GitHub comment)而按照markdown文本样式进行折行

    "prettier.arrowParens": "avoid", // (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid:省略括号

    "prettier.bracketSpacing": true, // 在对象,数组括号与文字之间加空格 "{ foo: bar }"

    "prettier.disableLanguages": ["vue"], // 不格式化vue文件,vue文件的格式化单独设置

    "prettier.endOfLine": "auto", // 结尾是 auto

    "prettier.eslintIntegration": false, //不让prettier使用eslint的代码格式进行校验

    "prettier.htmlWhitespaceSensitivity": "ignore",

    "prettier.ignorePath": ".prettierignore", // 不使用prettier格式化的文件填写在项目的.prettierignore文件中

    "prettier.jsxBracketSameLine": false, // 在jsx中把'>' 是否单独放一行

    "prettier.jsxSingleQuote": false, // 在jsx中使用单引号代替双引号

    "prettier.parser": "babylon", // 格式化的解析器,默认是babylon

    "prettier.requireConfig": false, // Require a 'prettierconfig' to format prettier

    "prettier.stylelintIntegration": false, //不让prettier使用stylelint的代码格式进行校验

    "prettier.trailingComma": "es5", // 在对象或数组最后一个元素后面是否加逗号(在ES5中加尾逗号)

    "prettier.tslintIntegration": false // 不让prettier使用tslint的代码格式进行校验
    }

    五、eslint相关配置

      eslint相关配置跟prettier结合起来,设置prettier的eslintIntegration属性为true,就可以根据eslint相关配置规则格式化代码,相关配置如下,更多配置规则请查看官网

      

    // https://eslint.org/docs/user-guide/configuring
    
    module.exports = {
      root: true,
      parserOptions: {
        parser: 'babel-eslint'
      },
      env: {
        browser: true
        // "jest":true
      },
      // required to lint *.vue files
      plugins: ['vue'],
      extends: ['plugin:vue/essential', 'standard'],
      // add your custom rules here
      rules: {
        // allow async-await
        camelcase: 'off',
        'no-console': 'error',
        'standard/no-callback-literal': 'off',
        'generator-star-spacing': 'off',
        'space-before-function-paren': [
          'error',
          {
            anonymous: 'always',
            named: 'never',
            asyncArrow: 'never'
          }
        ],
        'func-call-spacing': ['error', 'never'],
        'vue/no-mutating-props': 'nerve',
        // allow debugger during development
        // 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
        'no-debugger': 'error',
        'template-curly-spacing': 'off',
        quotes: ['error', 'single'],
        // 强制不使用分号结尾
        semi: ['error', 'never'],
        indent: [
          'error',
          2,
          {
            ignoredNodes: ['TemplateLiteral', 'ConditionalExpression'],
            SwitchCase: 1
          }
        ]
        // end 解决eslint报错问题
      }
    }

      在setting.json中设置一下配置,可在格式化的时候自动安装eslint规则修复不符合规范的代码。

    "eslint.validate": [
            "javascript",
            "javascriptreact",
            { "language": "vue", "autoFix": true }
        ],
    对生活:随心随性; 对工作:一丝不苟; 对学习:认真踏实; 对亲人:关心爱护; 愿每个人都在成长,得到属于自己的幸福!!!
  • 相关阅读:
    html中滚动条的样式
    在个人机上发布web项目
    Apache与SVN的集成
    待完成
    chmod
    【转】ubuntu修改IP地址和网关的方法
    ubuntu 添加svn服务
    生成指定大小的空文件
    数码单反相机完全攻略
    【转】ubuntu subversion安装
  • 原文地址:https://www.cnblogs.com/hexiaobao/p/14641700.html
Copyright © 2011-2022 走看看