前端编码规范
INFO
前端编码规范的核心概念:lint 工具、Node CLI
一、编码规范官方文档
1.Linter 修复工具
Linter 英译为衣服上多出来的小球、绒毛等,后指粘毛器(养猫🐱的人都知道这东西)。早在1978年,Stephen C.Johnson 在 debug 自己的 C 语言时的灵感:做一个工具来提示自己的代码写的哪里有问题,像【粘毛器】一样,把多出来的【毛球】去掉。
ESLint, commitlint, stylelint, markdownlint, prettierlint
2.静态资源站点
vuepress,这个一般来写技术文档,我的个人博客就是基于 vuepress 搭建静态资源站点,使用 github actions 自动发布。
3.node 库相关
4.多包管理工具
5.包管理工具
6.代码模板相关
二、技术选型
- 多包:monorepo lerna
- 包管理工具:pnpm
- lint:markdownlint、commitlint、stylelint、eslint、prettier
- CLI
- 测试:jest mocha
三、搭建思路
1.搭建项目基本框架
- 初始化项目:
lerna
+pnpm
的多包构建; - 梳理
html
规范、git
规范、markdown
规范、CHANGELOG
规范; - 创建
commitlint-config
、markdownlint-config
,使用npm scripts
发布npm
包;【我的npm主页】 - 使用
vuepress
搭建静态资源站点,创建markdown
及commitlint
规范文档; - 支持
CHANGELOG
自动化更新; - 使用
git action
发布静态资源站点。
2、完善 lint 规则
eslint 定制化能力
- 提供 CSS、Javascript、TypeScript、Node 编码规范;
- 创建
stylelint-config
,支持测试用例(结合jest测试工具使用可查看我的stylelint_npm说明); - 创建
eslint-config
,支持不同维度(js、ts、react、vue)下的 eslint 定制;- 如缩进、换行分号、不能为空、空格、单行最大行数、禁止连续赋值、字符串强制单引号、Boolean用!!、命名等。参考《JavaScript 编码规范》
- 可参考标准模板encode-fe-eslint-config
- 支持
prettier
3、搭建 Node 脚手架
eslint plugin、CLI Node Api
- 编码一套定制的 eslint 插件;
- 编写一套完整的 CLI,支持一键接入;
- 支持自动创建 .eslintrc.js、.eslintignore、.stylelintrc.js、.stylelintignore、commitlint.config.js、.markdownlint.json、.markdownlintignore、.prettierrc.js、.editorconfig 等;
4、实现一键扫描、一键修复
1、husky + git commit针对有问题的内容进行拦截;2、针对以上规范实现一键扫描、修复 利用lint工具
通过提供 CLI 的产物,实现一键接入(通过一键方式安装CLI,用最小的成本落地)、一键扫描(结合lint工具,扫描问题)、一键修复(当遇到不符合lint规范项目时如何fix)、一键升级(npm包升级)的功能。
INFO
具体实践见本博客《如何发布一个npm和plugin并定制脚手架?》