Open JTangming opened 4 years ago
Eslint 是一个linter,支持 auto fix,prettier 是一个 formatter。
eslint 与 prettier 是有一些配置冲突的,可以用相关插件来解决冲突。如 eslint-config-prettier、eslint-plugin-prettier。
eslint-plugin-prettier 插件会调用 prettier 对你的代码风格进行检查,其原理是先使用 prettier 对你的代码进行格式化,然后与格式化之前的代码进行对比,如果过出现了不一致,这个地方就会被 prettier 进行标记。eslint-plugin-prettier 也可以将 prettier 的错误提交给 eslint,通过 eslint 来提示错误。
通过使用 eslint-config-prettier 配置,能够关闭一些不必要的或者是与 prettier 冲突的 lint 选项。这样我们就不会看到一些 error 同时出现两次
开发中我使用 vscode 编码,通过 vscode 配置(注意不需要启用 editor.formatOnSave 选项):
“eslint.autoFixOnSave”: true
JSLint 的问题是所有的代码风格和规则都是内置好的,Douglas Crockford 不会向开发者妥协开放配置或者修改他觉得是对的规则。
Anton Kovalyov 吐槽:「JSLint 是让你的代码风格更像 Douglas Crockford 的而已」,并且在 2011 年 Fork 原项目开发了 JSHint。
JSHint 的特点就是可配置,同时文档也相对完善,而且对开发者友好。很快大家就从 JSLint 转向了 JSHint。
2013 年的 6 月份,Zakas 发布了全新的 lint 工具——ESLint。是基于 AST 的 lint,可以动态执行额外的规则,同时可以很方便的扩展规则。利用 AST 处理规则,用 Esprima 解析代码,执行速度要比只需要一步搞定的 JSHint 慢很多。
真正让 ESLint 逆袭的是 ECMAScript 6 的出现。ESLint 可扩展的优势一下就体现出来了,不仅可以扩展规则,甚至连解析器也能替换。Babel 团队就为 ESLint 开发了 babel-eslint 替换默认解析器,让 ESLint 率先支持 ES2015 语法。
1. 用 husky 和 lint-staged 构建 Git commit 代码检查工作流
husky 安装后,可以很方便的在 package.json 配置 git hook 脚本。
pre-commit 只 Lint 改动的
Feedly 的工程师 Andrey Okonetchnikov 开发的 lint-staged 就是基于这个想法,其中 staged 是 Git 里面的概念,指待提交区,使用 git commit -a,或者先 git add 然后 git commit 的时候,你的修改代码都会经过待提交区。那么就可以在这里做 lint 操作。
commitlint 规范 commit log
commit-msg 搭配 commitlint,它可以帮助我们 lint commit messages,如果我们提交的 log 不符合规范,直接拒绝提交。可以在 config 配置文件中优化相关信息。
2. conventional-changelog-cli 生成 changeLog
目前我们的工作量和他们类似:
Recommended workflow
如我们项目中 package.json script 中{ "bump": "SKIP_TAG=true npm run release"},去执行5、6、7、8的操作。