vlambda博客
学习文章列表

是什么操作,能让网易前端团队的代码风格完全统一?



团队协同开发由于代码风格的差异、编译的差异、设置的差异等,会遇到很多争执,经常有的有,单行代码器、标签长度、空格、大小写、未使用变量、三等号、代码代码能够改变变量等。构建良好的规范,可以让我们看到问题的清晰性,让人们看到错误的悦目,避免更多潜在的,可以欣赏一些潜在的,团队中开发的突破。





   01. 原来


“小明,为什么你的Tab是4个空格”

“小明,你这个代码的每一行缺少了分号”

“小明,你的代码字符串,为什么是单引号不是双引号”

“小明,你的大括号代码块,起始括号发生了换行”

“小明,你的一行代码太长了,滚动条拖半天看不到尾部”



团队协同开发中,由于风格的差异、编译器的差异、设置的差异等,你也可能会遇到上述问题的争执代码。
常见代码的这些有,单项代码、标签、空格、表达式、三个等长的长度、未使用的其他变量等。的质量是有很大影响的。
因此,我们需要团队的 规范代码 ,能够很好地让 代码统一清晰,可以减少错误的出现 ,更让看的人赏心悦目,避免一些潜在的开发者,减少团队中的代码突破代码。

   02. EditorConfig配置不同编辑器和IDE

01/介绍
EditorConfig 可以为不同的编辑器和IDE 处理同一个项目开发人员的一致编码风格问题。例如EditorConfig 允许为文件类型定义缩小和空格,当开发人员使用不同的行结束符平台(mac、windows ) 的时候,编辑器和 IDE 可以自动进行修复和订正。
一个典型的如下配置 (.editorconfig),针对 Markdown、JSON 和 YAML 配置文件有独特的规则

root = true


[*]

indent_style = tab

end_of_line = lf

charset = utf-8

trim_trailing_whitespace = true

insert_final_newline = true


[*.{json,yml,md}]

indent_style = space

indent_size = 2


支持的支持的编辑文件,便于阅读中IDE的配置,并且与版本控制系统的配置配合。


02/配置方式
部分IDE是默认支持,部分IDE需要安装插件,例如vscode的editorconfig for vs Code
级方面:编辑器级 > IDE 针对项目的配置 > 编辑优先配置优先级或配置优先级;文件相对于最近的级别更高

   03. 更漂亮的规格代码

01/介绍
Prettier 是一种首选的代码类型工具,但基本支持但所有项目的文件类型,包括不包括
  • JavaScript
  • JSX
  • Vue
  • 打字稿
  • CSS、Less、SCSS
  • HTML
  • JSON
  • 降价
它在您编写的时候,直接将您保存的现有代码样式,调整为统一的默认样式。
一个典型的配置如下 (.prettierrc)

{

  "printWidth": 80,

  "trailingComma": "es5",

  "tabWidth": 2,

  "singleQuote": true,

  "useTabs": false,

  "bracketSpacing": true,

  "endOfLine": "auto"

}

这么漂亮,非常智能,如果你设置了长度,它可以直接根据长度进行自动切换。
例如,同样针对 foo 函数,如果参数的内容过多

foo(function1(), function2(), function3());



更漂亮的话,会自动转换为

foo(

  function1(),

  function2(),

  function3()

);


然而,如果没有达到限制长度的话,那么代码会在每一行展示

foo('val', 'val2', 'val3');



02/配置方式

  • IDE引入相关插件
例如 vscode: Prettier - 代码格式化程序
  • 高性能执行
安装依赖

npm install --save-dev prettier


包配置脚本

{

  //...

  "scripts": {

    "prettier": "prettier --write .",

  },

  //...

}



  04. ESLint智能代码

01/介绍

ESLint 和 Prettier 不一样,Lintint 是对代码进行检查的目的,对不合法的代码自动进行修改为正确的代码类型;让代码风格更加统一。官方的推荐使用 Prettier进行格式化 和检查 捕捉错误!
ESLint 也是转换当前前端范围内,最广泛的工具中使用的。ESLint 可以配置所有用于集成 AST 的代码,对于 css、html 等无能为力。
ESLint 的规则配置非常多,当你配置 ESLint 的时候 Prettier 的时候,你可能会发现有很多代码格式的社区问题。解决冲突的方案,或者修改 eslint 的配置,或者但修改 prettier 的配置。有更简单的方案, 插件更漂亮 ,插件有这样的划分到更漂亮的规则,跟随着 eslint 的规则。
使用,的话需要先 安装依赖

npm install --save-dev eslint eslint-config-prettier eslint-config-standard eslint-plugin-

prettier eslint-plugin-react

一个典型的配置如下(.eslintrc.json)

{

  "extends": [

    "standard",

    "plugin:react/recommended",

    "plugin:@typescript-eslint/recommended",

    "plugin:prettier/recommended"

  ],

  "parser": "@typescript-eslint/parser",

  "plugins": ["react", "react-hooks", "@typescript-eslint"],

  "rules": {

    "no-unused-vars": "warn",

    "@typescript-eslint/no-use-before-define": ["error"],

    "react-hooks/rules-of-hooks": "error",

  }

}


执行代码 --tfix 可以对代码进行指定以及指定正


02/配置方式

  • IDE引入相关插件
例如vscode: eslint 插件
vscode的方式,是提示给你直接看到的错误,会帮你轻松修复的错误。
用这种方式,我们会在提交的时候,加入子子,执行 eslint 的钩子代码

 "husky": {

    "hooks": {

      "pre-commit": "lint-staged"

    }

  },

  "lint-staged": {

    "src/**/*.(js|jsx|ts|tsx)": [

      "eslint --fix",

      "prettier --write",

      "git add"

    ],

    "src/**/*.(less|scss|css)":[

      "stylelint --fix",

      "prettier --write",

      "git add"

    ]

  }


  • webpack 相关加载器
webpack loader的方式会在编译期就给你报错,报错的会影响代码的执行,直到你修复
安装依赖

npm install --save-dev eslint-loader

webpack配置

{

  test: /\.(j|t)sx?$/,

  use: [

  {

    loader: 'babel-loader',

  },

  {

    loader: 'eslint-loader',

    options: {

      //...

    }

  }

  ]

}


  05. Stylelint 样式


01/介绍

刚写ESL可以对css进行正确处理,但可以对css进行前级的属性处理。FFF,#FFFFFF]等。
我们利用 LESS/SSASS/CSS 等多种风格能够定制/对它进行自定义插件。它同样具有规则、理解最新的 css 语法、支持正扩展、自动修复、广泛的使用群体和活动的社区能力。
安装依赖

npm install --save-dev stylelint stylelint-config-recommended


一个典型的配置如下 (.stylelintrc)

{

  "extends": "stylelint-config-recommended",

  "rules": {

    "at-rule-no-unknown": [

      true,

      {

        "ignoreAtRules": ["extends"]

      }

    ],

  }

}

stylelin 智能的输出


执行 stylelin-fix 可以对样式进行校准和订正修复

配置方式同eslint的配置,不重复描述


  06.自动化

小程序在协同开发的时候,IDE 也可以用它来解决问题的插件,所以提交的代码为了解决这个问题,同时为了让开发人员在开发过程中简单易用,我们可以利用的代码,在每次提交代码的时候,自动执行代码和代码。
当时间比较多的时候说,如果每一个时间段都对所有内容进行痛点。一定要晚上看变化。。
首先, 安装插件

npm install --save-dev husky lint-staged


package.json 配置钩子

"husky": {

    "hooks": {

      "pre-commit": "lint-staged"

    }

  },

  "lint-staged": {

    "src/**/*.(js|jsx|ts|tsx)": [

      "eslint --fix",

      "prettier --write",

      "git add"

    ],

    "src/**/*.(less|scss|css)":[

      "stylelint --fix",

      "prettier --write",

      "git add"

    ]

  }

至此,我们统一团队代码规范的配置,就基本覆盖完善了。


  07. 小结

EditorConfig可以针对不同平台和IDE配置代码风格。
Prettier 可以对 HTML、JS、TS、CSS/SCSS 等进行代码修改对 HTML、JS、TS、CSS/SCSS 等进行代码修改的自动订正。
ESL 但对源代码、TS 进行的、通信和指定的合法性,当然也可以进行我们的自定义,可以自动解决插件和规则操作性问题。
Stylelint可以对Style进行流畅和订正,包含SCSS/SASS/CSS等。
团队统一代码规范团队开发是非常重要的,可以让代码风格一致合作、出现,同时也能减少bug。


「作者简介」


佑康


雷火UX资深工具开发工程师,有超过8年的前端开发经验,聚焦前端工程化提效和数据可视化技术;打造了雷火UX前端工程的“流浪行星计划”,包含Cli工具、sirius组件库、vega图表库、hamal svg icon库等工程体系。

目前在雷火UX工具开发团队负责可视化与工具相关的产品,这些工具产品为《永劫无间》、《天谕》等游戏提供了重要支持。





关注 分享 在看就是所长最大的生产力!