背景

众所周知,前端项目的代码质量和代码格式的校验是不可或缺的。很早之前在一个人开发的时候,脚手架生成vue项目的时候都没有打开过eslint,后面有位大佬加入,给boss说,加了个插件(eslint),有几百个bug,我快改完了。老板投来,牛皮牛皮,真牛皮的眼神?。所以我在这篇文章中描述如何规范统一前端代码风格。

我的环境:

node:14.4.0,npm :6.14.5,编辑器是vs code

目标

  1. 不限制IDE

  2. 只需要开启 ESlint

  3. 减少风格差异选择的争吵

  4. 全自动化,自动修复,保持原本的习惯就可以

主要用到的知识点

  1. editorConfig 编辑器配置文件

  2. Eslint 文件代码检查规范

  3. prettier

  4. lint-staged 提交到git之前进行一次代码检查

  5. husky

关于EditorConfig

  • 作用:用于解决不同运行环境,不同编辑器运行同一个项目的差异。

  • 如何生效:EditorConfig插件(我的是"EditorConfig for VS code")会在打开的文件的目录中查找名为.editorConfig的文件。然后读取文件中的属性,按先后顺序执行。

  • 代码(属性不区分大小写)

# 表明是最顶层的配置文件,发现设为true时,才会停止查找.editorconfig文件root = true[*]# 编码charset = utf-8# 设置缩进风格,tab或者空格。tab是hard tabs,space为soft tabsindent_style = space# 缩进的宽度indent_size = 2# 换行符,lf、cr和crlfend_of_line = lf# 设为true表明使文件以一个空白行结尾insert_final_newline = true# 设为true表示会除去换行行首的任意空白字符trim_trailing_whitespace = true

关于Eslint

ESLint 能够检测出代码中的潜在问题,解决代码质量问题。比如末尾是否空行,箭头函数是否需要括号,定义变量是否定义未使用等等。(此处使用standard规范,还有其他的,此处不细说)

   //react 安装 eslint   eslint   eslint-plugin-standard   eslint-config-standard-react:standard 的规则配置包扩展   eslint-plugin-react:支持 react 语法   babel-eslint: 兼容ES处于实验性阶段的语法   eslint-loader:在webpack中解析   eslint-plugin-import:支持import   eslint-plugin-promise:支持promise   eslint-plugin-babel:兼容处于实验阶段的特征    //生成vue项目的时候选择Pick an ESLint preset Standard风格,会自动安装以下插件    "eslint": "^4.15.0",    "eslint-config-standard": "^10.2.1",    "eslint-friendly-formatter": "^3.0.0",    "eslint-loader": "^1.7.1",    "eslint-plugin-import": "^2.7.0",    "eslint-plugin-node": "^5.2.0",    "eslint-plugin-promise": "^3.4.0",    "eslint-plugin-standard": "^3.0.1",    "eslint-plugin-vue": "^4.0.0",   "babel-eslint": "^8.2.1",

安装之后,将会有.eslintrc.js和.eslintignore两个文件(没有也可以自己生成)

//.eslintrc.js 有助于强制执行某些规则,具体rule可以调整module.exports = {    root: true,    parserOptions: {        parser: "babel-eslint",    },    env: {    browser: true,  },    extends: [        // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.        "plugin:vue/essential",        "standard",    ],    // required to lint *.vue files    plugins: ["vue", "prettier"],    // add your custom rules here    rules: {        "prettier/prettier": "error",        indent: [2, 2], // 控制缩进为2        quotes: [2, "single"], //单引号        "no-console": 0, //不禁用console        "no-debugger": 1, //禁用debugger        "no-var": 2, //对var警告        semi: 2, //强制使用分号        "semi-spacing": [2, { before: false, after: true }],        // 强制分号前后不允许空格        "no-irregular-whitespace": 0, //不规则的空白不允许        "no-trailing-spaces": 1, //一行结束后面有空格就发出警告        "eol-last": 0, //文件以单一的换行符结束        "no-unused-vars": [2, { vars: "all", args: "after-used" }], //不能有声明后未被使用的变量或参数        "no-underscore-dangle": 0, //标识符不能以_开头或结尾        // allow async-await        "generator-star-spacing": "off",        // allow debugger during development        "no-debugger": process.env.NODE_ENV === "production" ? "error" : "off",    },};//.eslintignore 配置检查可忽略的文件/build//config//dist//*.js
//package.json中的scripts里面增加如下命令"lint": "eslint --ext .js,.vue src", //vue"lint": "eslint --ext .js --ext .jsx src" // react

安装prettier

使用ESLint配合这些规范,能够检测出代码中的潜在问题,提高代码质量,但是并不能完全统一代码风格,因为这些代码规范的重点并不在代码风格上。因此还需要增加一个prettier

//安装npm i -D prettier//调用prettier对你的代码风格进行检查npm i -D eslint-plugin-prettier//在.eslintrc.js的rules中添加,"prettier/prettier": "error"//表示被prettier标记的地方抛出错误信息{  "plugins": ["prettier"],  "rules": {    "prettier/prettier": "error"  }}//借助ESLint的autofix功能,在保存代码的时候,自动将抛出error的地方进行fix。//因为我们项目是在webpack中引入eslint-loader来启动eslint的,所以我们只要稍微修改webpack的配置,就能在启动webpack-dev-server的时候,每次保存代码同时自动对代码进行格式化。const path = require('path')module.exports = {  module: {    rules: [      {        test: /\.(js|vue)$/,        loader: 'eslint-loader',        enforce: 'pre',        include: [path.join(__dirname, 'src')],        options: {          fix: true        }      }    ]}//eslint和prettier冲突的情况 安装npm i -D eslint-config-prettier//.eslintrc.js extends: [    "standard",    "plugin:vue/essential",    "plugin:prettier/recommended",],//.prettierrc{    "eslintIntegration": true,    "singleQuote": true,    "semi": false,    "trailingComma": "es5",    "endOfLine": "auto"}

Lint-staged与husky

lint-staged:确保在暂存文件的时候能够让错误格式代码不会提交到你分支。可以定制在特定的git阶段执行特定的命令

husky:git命令hook专用配置

//安装npm install --save-dev lint-staged husky//package.json增加如下配置"husky": {    "hooks": {      "pre-commit": "lint-staged"    }  },"lint-staged": {    "*.{js,vue,css,less,json,md}": [      "prettier --write",      "git add"    ],    "**/*.less": "stylelint --syntax less",    "**/*.{js,vue}": "npm run lint-staged:js"  }

关于行结束符

当开发过程中,有的是mac开发,有的是windows开发,那么换行符就会冲突。

// 换行符。Mac使用 'unix' 对应 LF,Win使用 'windows' 对应 CRLF'linebreak-style': ['error', 'unix']//修改git全局配置,禁止git自动将lf转换成crlf, 命令:git config --global core.autocrlf false//修改编辑器的用户配置,例如vscode"files.eol": "\n", // 文件换行使用lf方式

针对不同的框架的项目,大多都是相同的。只是针对不同的文件例如.vue或者.jsx有细微差别

尾声

以上是一个项目的代码错误和风格检查,以及到提交环节的配置。但是在实际中,针对不同的ide还需要增加ide的配置。

以vscode为例子:当保存文件的时候将自动格式化代码{    "editor.defaultFormatter": "esbenp.prettier-vscode",    "editor.formatOnSave": true,}

喜欢的请点个赞,谢谢

eslint规范_规范统一前端代码风格相关推荐

  1. 使用ESLint+Prettier来统一前端代码风格

    Prettier 简单使用 ESLint 与 Prettier配合使用 首先肯定是需要安装 prettier ,并且你的项目中已经使用了 ESLint ,有 eslintrc.js 配置文件. npm ...

  2. (IT段子)关于统一风格——使用ESLint+Prettier来统一前端代码风格

    一天我路过一座桥,碰巧看见一个人想跳河自杀.我跑过去对他大喊道:"别跳,别死啊." "为什么不让我跳?"他说. "因为还有很多东西值得我们活下去啊.& ...

  3. 使用 Eslint + husky + lint-staged + Prettier 提高前端项目质量、统一项目代码风格

    使用 Eslint + husky + lint-staged + Prettier 提高前端项目质量.统一项目代码风格 Eslint 代码检查,编辑器启用 Eslint 之后,不符合规范的会自动进行 ...

  4. 前端架构师神技,三招统一团队代码风格

    本文从代码规范,代码检查,代码格式化,以及编辑器自动化实现的方向,介绍代码规范统一在我们团队的实践应用. 大纲预览 本文介绍的内容包括以下方面: 认识代码规范 制定和统一规范 神技一:ESLint 神 ...

  5. vue前端代码风格指南

    vue前端代码风格指南 参考网址: https://mp.weixin.qq.com/s/ejqSWUNBlADbOXbNcy6TNg 文章目录 vue前端代码风格指南 一.命名规范 1.1 项目文件 ...

  6. 前端代码风格规范总结

    本文转自http://www.cnblogs.com/qinyi173/p/7150644.html 规范目的:为了提高工作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,在网站建设中 ...

  7. 使用Prettier配合TsLint/Eslint 统一前端代码格式化规则,保证代码质量

    背景 在开发前端项目时,每个人的开发习惯不同,用的IDE也不同,有的人喜欢用VSCode,有的人喜欢用Webstorm,而各个编译器默认的格式化规则有不一致,这就导致了不同IDE格式化出来的代码是不一 ...

  8. Vue 前端代码风格指南

    目录 一.命名规范 1.1.项目文件命名 1.2.Vue 组件命名 1.3.代码参数命名 二.代码规范 2.1.Vue 2.2.HTML 2.3.CSS 2.4.JavaScript 三.注释规范 3 ...

  9. Vue 前端代码风格指南、代码规范

    目录 ​一.命名规范 1.1 项目文件命名 1.2 Vue 组件命名 1.3 代码参数命名 二.代码规范 2.1 Vue  主要针对vue2.x 2.2 HTML 2.3 CSS 2.4 JavaSc ...

最新文章

  1. SHT30温湿度传感器驱动设计分析及代码实现
  2. C#中使用JavaScriptSerializer类实现序列化与反序列化
  3. JavaScript substr() 方法
  4. cassandra使用心得_使用Spring Data Cassandra缓存的预备语句
  5. [Leetcode][第309题][JAVA][最佳买卖股票时机含冷冻期][动态规划][压缩空间]
  6. 基于JAVA springboot+mybatis 电商书城平台系统设计和实现
  7. 归并排序(merge sort)算法实现
  8. CDN的基本原理和基础架构
  9. 1051. Pop Sequence (25)
  10. 电气工程师需掌握哪些计算机知识,一名合格电气工程师必须掌握的10个基本技能...
  11. linux系统源码文档,Linux操作系统源代码详细分析
  12. vue实现echarts中的map自定义地图背景色
  13. nextpolish安装_Polish安装问题
  14. EPLAN史上最全部件库,官网下载,部件宏,EDZ格式,大小合适导入容易
  15. vue 数字动画递增_数字滚动动画效果 vue组件化
  16. go语言开发有哪些工具
  17. EMC规划BRS产品线 推动私有云建设
  18. CSDN【精品专栏】第七期
  19. 17、前端开发:HTML知识补充——表格标签
  20. 《海底捞你学不会》探索管理的本质

热门文章

  1. 什么是 constructor signature in interface
  2. 如何打印出 SAP Spartacus 调用 OCC API 消费的所有 endpoint
  3. SAP CRM SPRO Customizing 里 Text Object 属性 continue 的含义
  4. SAP Spartacus 服务器端 nodejs 应用里渲染 Angular Component 的一个例子
  5. 关于如何能够快速找到某个文本在所有文件中的出现位置
  6. 在Angular的index.html里插入script,拦截所有动态创建标签页的场景
  7. 使用Windows10 software center升级版本1909
  8. 微软Azure storage account的connection string
  9. WordPress Kyma插件里Connect和disconnect按钮的动态显示逻辑
  10. SAP CRM呼叫中心和Hybris Backoffice的轮询设计