Git Hooks

    使用 会有什么好处呢?在我看来至少具有如下 3 点:

    • 更高的开发效率,Lint 很容易发现低级的、显而易见的错误

    很多时候我们lint的校验是放在持续集成阶段,大概流程如下:

    但这样有一个问题,我们的 CI(持续集成) 往往不是仅仅只做 Lint工作,它还有会有很多其它的任务(如打包文件,静态资源上传 CDN 等),这样就导致特别的浪费时间,往往可能需要几分钟之后你才会发现问题,或者有的时候你根本就没有发现你的 CI 没有跑通过。

    最有效的解决方案就是将 Lint 校验放到本地,常见做法是使用 或者 pre-commitGit Hooks - 图1 在本地提交之前先做一次 Lint校验。

    当然如果你创建项目的时候使用了 ,你也可以使用它内置的 ,它是基于husky的,但稍微改了一下接口。不过这里我们还是选用 husky作为例子。

    然后修改 package.json,增加配置:

    最后尝试 Git 提交,你就会很快收到反馈:

    解决上面的痛点就需要使用 lint-stagedGit Hooks - 图2 了。它只会校验检查你提交或者说你修改的部分内容。

    然后,修改 package.json 配置:

    如上配置,每次它只会在你本地 commit 之前,校验你提交的内容是否符合你本地配置的 eslint规则(这个见文档 ),如果符合规则,则会提交成功。如果不符合它会自动执行 eslint --fix 尝试帮你自动修复,如果修复成功则会帮你把修复好的代码提交,如果失败,则会提示你错误,让你修好这个错误之后才能允许你提交代码。

    最佳的 lint 规范流程就是推荐团队成员先在自己的编辑器中配置 eslint,在 webpack 中配置并开启 eslint-loader 错误提示,这样平时写的时候编辑器就能帮你修正一些简单的格式错误,同时提醒你有哪些不符合 规范的的地方,并在命令行中提示你错误。这方面详细的内容见 ESLint