一、安装以下三个扩展程序

1.ESLint

● javascript代码检语法测工具,可以配置每次保存时格式化js
● 每次保存时只格式化部分代码,需要连续按住Ctrl+S多次才能格式化完成
在这里插入图片描述

2.Prettier - Code formatter

● 只关注格式化,并不具有eslint检查语法等能力,
● 支持JavaScript · Flow · TypeScript · CSS · SCSS · Less · JSX · Vue · GraphQL · JSON · Markdown
在这里插入图片描述
Prettier 的一些主要默认配置选项:

属性名 默认值 备注
printWidth 80 控制每行代码的最大字符数。
tabWidth 2 设置每个缩进级别的空格数。
useTabs false 控制是否使用制表符 (\t) 代替空格进行缩进。
semi true 决定是否在语句末尾添加分号。
singleQuote false 如果为 true,则 Prettier 使用单引号而不是双引号。
quoteProps “as-needed” 控制对象属性是否需要引号。
jsxSingleQuote false 如果为 true,则在 JSX 中使用单引号。
trailingComma “es5” 控制尾随逗号的使用。选项包括 “es5”, “none”, 和 “all”。
bracketSpacing true 如果为 true,则在对象属性的括号前后添加空格。
jsxBracketSameLine false 如果为 true,则在 JSX 中将 > 放在最后一对属性后的同一行上。
arrowParens “always” 控制箭头函数中括号的使用。选项包括 “always” 和 “avoid”。
rangeStart 0 格式化代码时的起始行号。
rangeEnd Infinity 格式化代码时的结束行号。
parser null 指定解析器,用于解析不同的语言或框架。
filepath null 指定文件路径,Prettier 会根据文件扩展名选择相应的解析器。
requirePragma false 如果为 true,只有包含特定注释的代码块才会被格式化。
insertPragma false 如果为 true,Prettier 会在文件顶部添加一个特殊的注释,以启用 Prettier 格式化。
proseWrap “preserve” 控制散文(非代码)元素的换行。选项包括 “always”, “never”, 和 “preserve”。
htmlWhitespaceSensitivity “css” 控制 HTML 文件中空白的处理方式。选项包括 “css”, “strict”, 和 “ignore”。
endOfLine “lf” 控制行尾字符。选项包括 “auto”, “lf”, “crlf”, 和 “cr”。
3.Vetur

● 支持格式化html、标准css、标准js、vue文件
在这里插入图片描述

二、配置setting.json

1.打开setting.json文件在这里插入图片描述
2.编辑setting.json文件
{
	"editor.formatOnType": true, //编辑时是否自动格式化
    "editor.formatOnSave": true, //保存时是否自动格式化
    "editor.formatOnPaste": true, //粘贴时是否自动格式化
    "editor.wordWrapColumn": 500, //视图每行最大字符数
    "editor.wordWrap": "wordWrapColumn", //视图自动换行控制(视觉上折行,不增加代码行数),超出wordWrapColumn设置的值折行
    "editor.renderIndentGuides": false, //编写代码时是否给出对齐连线
    //"editor.codeActionsOnSave": { 
    //    "source.fixAll.eslint": true // 代码保存时按照eslint规则修复
    //},
    "editor.tabSize": 2, // tab默认两个空格
    "prettier.semi": true, //是否添加结束分号
    "prettier.singleQuote": true, //是否使用单引号
    "prettier.trailingComma": "none", // 是否在末尾自动添加逗号
    "prettier.tabWidth": 4, //tab缩进为4个空格字符
    "prettier.printWidth": 500, //代码每行最大字符数,超出换行(会增加行数)
    "vetur.format.options.tabSize": 4, //tab缩进为4个空格
    "vetur.format.defaultFormatter.html": "js-beautify-html", //html格式化规则(解决属性换行问题)
    "vetur.format.defaultFormatter.js": "vscode-typescript", //让vue中的js按编辑器自带的ts格式进行格式化(解决属性换行问题)
    "vetur.format.defaultFormatter.ts": "vscode-typescript", //让vue中的ts按编辑器自带的ts格式进行格式化(解决属性换行问题) 
    "vetur.format.defaultFormatterOptions": {
        "js-beautify-html": { //vue文件html相关
            "wrap_attributes": "aligned-multiple" //以下为取值说明
            // - auto: 仅在超出行长度时才对属性进行换行。
            // - force: 对除第一个属性外的其他每个属性进行换行。
            // - force-aligned: 对除第一个属性外的其他每个属性进行换行,并保持对齐。
            // - force-expand-multiline: 对每个属性进行换行。
            // - aligned-multiple: 当超出折行长度时,将属性进行垂直对齐。
        },
        "prettyhtml": { //vue文件html相关
            "printWidth": 500, //每行最大字符数,超出换行(会增加行数)
            "singleQuote": false, //是否使用单引号
            "wrapAttributes": false, //属性换行
            "sortAttributes": false  //属性排序
        },
        "prettier": { //vue文件js相关
            "semi": true, //是否添加结束分号
            "singleQuote": true //是否使用单引号
        }
    },
    
    "vetur.validation.template": false, //是否检测模板中的语法
}

{
  "editor.formatOnSave": true, // 每次保存自动格式化
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true // 每次保存的时候将代码按eslint格式进行修复
  },
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[vue]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // vue文件默认格式化方式
  },
  // vetur格式化配置
  "vetur.format.defaultFormatter.html": "js-beautify-html",
  "vetur.format.options.tabSize": 2,
  "vetur.format.defaultFormatterOptions": {
    "js-beautify-html": {
      "wrap_attributes": "auto"
    }
  },
  "vetur.format.defaultFormatter.js": "vscode-typescript", //让vue中的js按编辑器自带的ts格式进行格式化
  "javascript.format.insertSpaceBeforeFunctionParenthesis": true, // 函数前加上空格 只有在默认vetur的时候生效
  // js文件默认格式化方式 和vue中的js保持一致使用编辑器自带的ts格式
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // js文件默认格式化方式prettier
  },
  "[json]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // json文件默认格式化方式prettier
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"  // css文件默认格式化方式prettier
  },
  
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode" // typescript文件默认格式化方式prettier
  },
  "editor.fontSize": 16, // 字体大小
  "editor.wordWrap": "on", // 控制折行方式 - "on" (根据视区宽度折行)
  "editor.tabSize": 2, // 换行默认以tab缩进 2个字符
  "editor.colorDecorators": false, // 控制编辑器是否显示内联颜色修饰器和颜色选取器。
  "editor.snippetSuggestions": "top", // 将建议的代码段优先级提前选择,比如输入for第一个提示是for循环代码段。
  "files.associations": {
    // 文件关联语言的优先级配置
    "*.js": "javascriptreact",
    "*.vue": "vue",
    "*.cshtml": "html",
    "*.dwt": "html"
  },
  "window.zoomLevel": -1,
  "files.autoSave": "onFocusChange",
  "editor.formatOnPaste": true
}

如果prettier默认格式化规则不符合要求,在项目根目录创建.prettierrc.json文件覆盖默认格式化规则

.prettierrc.json

{
  "singleQuote": true,
  "semi": true,
  "trailingComma": "all", // 数组、对象属性最后加逗号
  "arrowParens": "always" // 箭头函数参数总是用括号包起来
}

三、eslint语法检测

请看另一篇文章:https://blog.csdn.net/lihefei_coder/article/details/92540985

Logo

基于 Vue 的企业级 UI 组件库和中后台系统解决方案,为数万开发者服务。

更多推荐