VSCode扩展工具 5. 前端代码规范(koroFileHeader,Prettier + Vetur + ESLint)

699 阅读4分钟

前端代码规范使用结合工具

  • 编码环境: image.png

1. 安装相关扩展程序:koroFileHeader、Prettier、Vetur、ESLint

2. VSCode settings.json 配置: koroFileHeader、Prettier、Vetur、ESLint

  • 快捷键使用工具:
    1. 注释功能:
      • 头部注释:Ctrl + alt + i

        直接按住快捷键,即可在当前文件头部生成

      • 函数注释:Ctrl + alt + t

        鼠标光标移到到目标函数的上一行,再按快捷键

    2. 代码格式化功能:Shift + alt + f

      Vetur + Prettier 的快捷使用

    3. 代码规范和错误检查修复功能:Ctrl + S

      ESLint 的快捷使用。
      别忘了在当前项目配置好eslint文件,否则单单只有vscode settings是无效的。
      VSCode扩展工具 4. 代码规范和错误检查修复工具ESLint

{
  "editor.tabSize": 2, // tab 大小为2个空格
  "editor.wordWrap": "on",
  "workbench.colorTheme": "SynthWave '84",
  "files.associations": {
    "*.js": "javascript",
    "*.md": "markdown",
    "*.wxml": "wxml",
    "*.vue": "vue"
  },
  "diffEditor.ignoreTrimWhitespace": false,
  "window.zoomLevel": 0,
  "liveServer.settings.CustomBrowser": "chrome",

  /* koro1FileHeader ->Start */
  // 插件配置选项
  "fileheader.configObj": {
    "createFileTime": true, // 当前时间/创建文件时间, 设为false更改为当前生成注释的时间
    "language": {
      "languagetest": {
        "head": "/$$",
        "middle": " $ @",
        "end": " $/"
      }
    },
    "autoAdd": false,
    "autoAddLine": 100,
    "autoAlready": false,
    "annotationStr": {
      "head": "/*",
      "middle": " * @",
      "end": " */",
      "use": false
    },
    "headInsertLine": {
      "php": 2,
      "sh": 2
    },
    "beforeAnnotation": {
      "文件后缀": "该文件后缀的头部注释之前添加某些内容"
    },
    "afterAnnotation": {
      "文件后缀": "该文件后缀的头部注释之后添加某些内容"
    },
    "specialOptions": {
      "特殊字段": "自定义比如LastEditTime/LastEditors"
    },
    "switch": {
      "newlineAddAnnotation": true
    },
    "supportAutoLanguage": [],
    "prohibitAutoAdd": [
      "json"
    ],
    "folderBlacklist": [
      "node_modules",
      "文件夹禁止自动添加头部注释"
    ],
    "prohibitItemAutoAdd": [
      "项目的全称, 整个项目禁止自动添加头部注释, 可以使用快捷键添加"
    ],
    "moveCursor": true,
    "dateFormat": "YYYY-MM-DD HH:mm:ss", // moment.js的format方法的参数
    "atSymbol": [
      "@",
      "@"
    ],
    "atSymbolObj": {
      "文件后缀": [
        "头部注释@符号",
        "函数注释@符号"
      ]
    },
    "colon": [
      ": ",
      ": "
    ],
    "colonObj": {
      "文件后缀": [
        "头部注释冒号",
        "函数注释冒号"
      ]
    },
    "filePathColon": "路径分隔符替换",
    "showErrorMessage": false,
    "writeLog": false,
    "wideSame": true, // // 设置为true开启等宽设置
    "wideNum": 13, // 头部注释等宽设置wideSame
    "functionWideNum": 0, // 函数注释等宽设置:0 默认关闭 设置一个正整数即可开启 比如12
    "CheckFileChange": false,
    "createHeader": false, // 新建文件自动添加头部注释
    "useWorker": false,
    "designAddHead": false,
    "headDesignName": "random",
    "headDesign": false,
    "cursorModeInternalAll": {},
    "openFunctionParamsCheck": true, // 函数注释自动提取函数的参数
    "functionParamsShape": [
      "{",
      "}"
    ],
    "functionBlankSpaceAll": {},
    "functionTypeSymbol": "*",
    "typeParamOrder": "type param", // 参数类型 和 参数的位置自定义
    "customHasHeadEnd": {},
    "throttleTime": 60000
  },
  // 在光标处插入函数注释
  "fileheader.cursorMode": {
    "func": "",
    "description": "",
    "param": "Do not edit",
    "return": "Do not edit",
    "example": ""
  },
  // 头部注释
  "fileheader.customMade": {
    "Author": "JK",
    "Date": "Do not edit",
    "LastEditors": "JK",
    "LastEditTime": "Do not edit",
    "FilePath": "no item name", // 去掉项目名称,  only file name可以去掉路径,只展示文件名
    "Description": "",
    "custom_string_obkoro1_copyright": "Copyright ${now_year} OBKoro1, All Rights Reserved. ", // 版权声明 保留所有权利 自动替换年份
    "custom_string_obkoro1_date": "Do not edit" // 版权时间
  },
  /* koro1FileHeader ->End */

  /*  Prettier ->Start  */
  "prettier.printWidth": 100, // 超过最大值换行
  "prettier.tabWidth": 2, // 缩进字节数
  "prettier.useTabs": false, // 缩进不使用tab,使用空格
  "prettier.semi": true, // 句尾添加分号
  "prettier.singleQuote": true, // 使用单引号代替双引号
  "prettier.proseWrap": "preserve", // 默认值。因为使用了一些折行敏感型的渲染器(如GitHub comment)而按照markdown文本样式进行折行
  "prettier.arrowParens": "always", //  (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid:省略括号
  "prettier.bracketSpacing": true, // 在对象,数组括号与文字之间加空格 "{ foo: bar }"
  "prettier.endOfLine": "auto", // 结尾是 \n \r \n\r auto
  "prettier.htmlWhitespaceSensitivity": "ignore",
  "prettier.ignorePath": ".prettierignore", // 不使用prettier格式化的文件填写在项目的.prettierignore文件中
  "prettier.jsxBracketSameLine": true, // 在jsx中把'>' 是否单独放一行,不适用于自关闭元素
  "prettier.jsxSingleQuote": false, // 在jsx中使用单引号代替双引号
  "prettier.requireConfig": false, // Require a 'prettierconfig' to format prettier
  "prettier.trailingComma": "es5", // 在对象或数组最后一个元素后面是否加逗号(在ES5中加尾逗号)
  "terminal.integrated.allowMnemonics": true,
  "terminal.integrated.automationShell.linux": "", // 不让prettier使用tslint的代码格式进行校验
  "prettier.vueIndentScriptAndStyle": true, // 是否缩进Vue 文件中的代码<script>和<style>标签
  /* 当 requirePragma 和 insertPragma 两个选项同时使用时,--require-pragma具有优先权 */
  "prettier.requirePragma": false, // 需要写文件开头的 @prettier
  "prettier.insertPragma": false, // 在文件顶部插入一个特殊标记'@format',指定文件已使用 Prettier 格式化
  "prettier.quoteProps": "as-needed", // 仅在需要时在对象属性周围添加引号
  "prettier.embeddedLanguageFormatting": "auto", // 自动识别嵌入代码,对其进行格式化, 如在 JavaScript 中带有标记的标记模板html或 Markdown 代码块
  /* Prettier ->End */

  /* Vetur ->Start */
  "vetur.format.defaultFormatter.html": "prettier", //  Valid values: "none", "prettier", "js-beautify-html". 配置值范围取决于你当前编辑器所安装的格式化扩展程序,如js-beautify-html => Beautify 扩展程序
  "vetur.format.defaultFormatter.pug": "prettier",
  "vetur.format.defaultFormatter.css": "prettier",
  "vetur.format.defaultFormatter.postcss": "prettier",
  "vetur.format.defaultFormatter.scss": "prettier",
  "vetur.format.defaultFormatter.less": "prettier",
  "vetur.format.defaultFormatter.stylus": "stylus-supremacy",
  "vetur.format.defaultFormatter.js": "prettier",
  "vetur.format.defaultFormatter.ts": "prettier",
  "vetur.format.defaultFormatter.sass": "sass-formatter",
  "vetur.format.options.tabSize": 2,
  "vetur.format.options.useTabs": true, // 是否利用tab替代空格
  "vetur.format.styleInitialIndent": true, // 对vue文件中的style是否统一缩进格式
  "vetur.format.scriptInitialIndent": true, // 对vue文件中的script是否统一缩进格式
  // "vetur.ignoreProjectWarning": true, // 忽略提示
  // 支持自定义块显示格式
  "vetur.grammar.customBlocks": {
    "docs": "md",
    "i18n": "json"
  },
  // vetur格式 HTML 模板
  "vetur.format.defaultFormatterOptions": {
    "prettier": {
      "printWidth": 100,
      "tabWidth": 2,
      "singleQuote": true, // 用单引号
      "semi": false, // 不加分号
      "trailingComma": "none", // 禁止末尾添加逗号
      "javascript.format.insertSpaceBeforeFunctionParenthesis": true, // 函数括号前是否加空格
      "typescript.format.insertSpaceBeforeFunctionParenthesis": true, // 函数括号前是否加空格
      "arrowParens": "avoid" //  (x) => {} 箭头函数参数只有一个时是否要有小括号。avoid:省略括号
    },
    // Beautify 扩展程序
    "js-beautify-html": {},
    // 已弃用
    "prettyhtml": {}
  },
  "[vue]": {
    // 定义一个默认格式化程序, 该格式化程序优先于所有其他格式化程序设置。必须是提供格式化程序的扩展的标识符
    "editor.defaultFormatter": "octref.vetur",
    // "editor.formatOnSave": true, // 保存时是否自动格式化
  },
  /* Vetur ->End */

  /* ESLint ->Start */
  "eslint.enable": true, // eslint检验开关, 关闭需要显示定义false值
  "eslint.format.enable": true, // 启用 ESLint 作为已验证文件的格式化程序
  "editor.codeActionsOnSave": { // 保存时自动修复
    "source.fixAll.eslint": true, // 保存后代码将自动按eslint格式进行修复
  },
  // 添加支持类型校验
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "html",
    "vue"
  ],
  /* ESLint ->End */
}