代码规范 eslint+prettier

vscode设置

一、注释

  1. 插件 koroFileHeader

  2. setting.json添加配置

    // korofileheader 注释插件 设置里面找到 Custom Made 写入以下配置
    "fileheader.customMade": {
        //此为头部注释
        "Description": "",
        "Author": "",
        "Date": "Do not edit",
        "LastEditors": "",
        "LastEditTime": "Do not edit"
    },
    //此为函数注释
    "fileheader.cursorMode": {
        "description": "",
        "param": "",
        "return": "",
        "author": ""
    },
  3. 使用

    ctrl+alt+i  //添加 文件头 注释
    ctrl+alt+t  //添加 函数 注
    //注意:如果不生效,可能与其他快捷方式冲突,修改即可

二、ESLint + Prettier 保存时自动修复代码

ESLint :代码检查+代码格式化工具。

Prettier:代码格式化工具。

vetur:vue代码格式化工具,底层默认的是Prettier。

  1. vscode安装以下插件

    EsLint、vetur、Prettier - Code formatter

  2. setting.json添加配置

    // 每次保存自动格式化ctrl+s
    "editor.formatOnSave": true,
    // 每次保存的时候将代码按eslint格式进行修复
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    },
    "editor.tabSize": 4,
    "editor.wordWrap": "on", //开启自动换行
    //配置内配置对 .ts 文件的格式化
    "[typescript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    //配置内配置对 .js 文件的格式化
    "[javascript]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    //配置内配置对 .json 文件的格式化
    "[jsonc]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode"
    },
    "editor.fontLigatures": true,
    "[json]": {
        "editor.quickSuggestions": {
            "strings": true
        },
        "editor.suggest.insertMode": "replace"
    }, //只有一个参数的箭头函数的参数是否带圆括号(默认avoid)
    ​
    // 使用单引号
    "prettier.singleQuote": true,
    // 末尾不加分好
    "prettier.semi": false,
    ​
    // ---------- vetur ----------
    "[vue]": {
        "editor.defaultFormatter": "octref.vetur"
    },
    "vetur.format.defaultFormatter.html": "prettyhtml",
    "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.defaultFormatterOptions": {
        "js-beautify-html": {
            "wrap_attributes": "preserve-aligned"
        },
        "prettyhtml": {
            "singleQuote": false,
            "sortAttributes": false
        },
        "prettier": {
            "singleQuote": true, //使用单引号
            "printWidth": 100,
            "semi": true,//分号
            "eslintIntegration": true//支持eslint格式化
        }
    }

项目中设置规范

首先在项目安装依赖,pckage.json

{
    "scripts": {
        "lint": "eslint \"src/**/*.{js, vue}\""
    },
    "devDependencies": {
        "@vue/eslint-config-prettier": "^6.0.0",
        "babel-eslint": "^10.1.0",
        "eslint": "^6.7.2",
        "eslint-plugin-prettier": "^3.1.3",
        "eslint-plugin-vue": "^7.0.0-0",
        "prettier": "^1.19.1"
    }
}

然后配置lint规则,.eslintrc.js

module.exports = {
    root: true,
    env: {
         node: true,
    },
    extends: [ " plugin:vue/vue3-essential", "eslint : recommended", "@vue/prettier"],
    parserOptions:{
        parser: "babel-eslint",ss
    },
    rules: {
        "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
        "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
        "prettier/prettier": [
            "warn",
            {
                singleQuote: true, //单引号
                semi: true, //结尾带分号
                trailingComma: "es5",
            },
        ],
    },
};

如果有必要还可以配置prettier .config. js修改prettier的默认格式化规则

module.exports = {
    printWidth: 100, //每行代码长度(默认80)
    tabWidth: 4, //每个tab相当于多少个空格 (默认2) 
    useTabs: false, //是否使用tab进行缩进(默认false)
    singleQuote: true, //使用单引号(默认false)
    semi: true ,//声明结尾使用分号(默认true)
    trailingComma: 're5', //多行使用拖尾逗号(默认none)
    bracketSpacing: true, //对象字面量的大括号间使用空格(默认true)
    jsxBracketSameLine: false, //多行JSX中的> 放置在最后一行的结尾, 而不是另起一行
    arrowParens:"avoid", //只有一个参数的箭头函数的参数是否带圆括号(默认avoid)
};
npm run lint 检查语法

hbuilder设置

安装插件 eslint-plugin-vue、prettier

prettier.config.js

module.exports = {
    printWidth: 100, //每行代码长度
    semi: true,//每行是够有分好
    tabWidth: 4,//每行缩进4格
    useTabs: false,// 缩进不使用tab,使用空格
    singleQuote: true,//是否单引号
    trailingComma: "es5",// 在对象或数组最后一个元素后面是否加逗号(在ES5中加尾逗号)
    bracketSpacing: true,// 在对象,数组括号与文字之间加空格 "{ foo: bar }"
    htmlWhitespaceSensitivity: "ignore",
    parsers: {
        ".jsx": "flow",
        ".scss": "scss",
        ".ts": "typescript",
        ".less": "css",
        ".vue": "vue",
        ".nvue": "vue",
        ".ux": "vue",
        ".yml": "yaml",
    }
}

如果不起作用,可能是项目中存在 .editconfig.js,覆盖了相关属性

.editorconfig.js

root = true

# 对所有文件生效
[*]
# utf-8编码
charset = utf-8
# 空格形式缩进2空格
indent_style = space
indent_size = 2
# 使用单引号
quote_type = single
# Linux换行符
end_of_line = lf
# 结尾插入新行
insert_final_newline = true
# 去除结尾空格
trim_trailing_whitespace = true

# 对后缀名为 md 的文件生效
[*.md]
trim_trailing_whitespace = false

自定义注释

 {
    	"file-annotation": {
    		"prefix": "anno",
    		"body": [
    			"/**",
    			"  * @Description:",
    			"  * @author Wangyanhong",
    			"  * @createTime: $DATE_TIME",
    			"  */"
    		],
    		"triggerAssist": false,
    		"description": "file annotation"
    	},

    	"method-annotation": {
    		"prefix": "anno",
    		"body": [
    			"/**",
    			"  * @Description",
    			"  * @param $1",
    			"  * @return $2",
    			"  */"
    		],
    		"triggerAssist": false,
    		"description": "method annotation"
    	}

    }

prettier配置详细

/*  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", // 结尾是 \n \r \n\r 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的代码格式进行校验
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值