现在前端工程化,自动化已经成为了新趋势,若是咱们要从新开始作一个项目,你会花费多久的时间在前期环境的搭建上呢?在咱们前端的的积累中,咱们须要将这些技术沉淀下来,便于咱们开始一个新的项目,而没必要花费过多的经历在环境搭建中。css
此次我作的是一个集成了 eslint、stylelint、git hook的前端代码检查工具。项目已经开源在github上,名字叫作oishi,一开始想起名叫husky(哈士奇),后来这个名字被占了(无奈脸)。前端
先来理一下咱们这个工具须要作什么事情node
须要让他初始化eslint,stylelint的配置文件 安装好咱们须要的依赖 挂载git钩子,在代码提交时进行进行eslint检查 有了目标咱们开始实现咱们这样的一个工具:git
1.准备工做github
2.进入正题shell
对于以前提到的第一点,咱们首先要有本身的一个配置,在初始化的时候将它拉下来,咱们在这里将本身的配置扔到了github的仓库中,能够参考一下个人项目目录配置文件,从github上拉下来后利用node原生的fs模块读写配置文件。npm
咱们所须要的依赖项目也都会记录在配置文件中,读取文件后与当前目录下的package.json对比一下,利用shell执行安装缺乏的依赖便可json
挂载git钩子,有两种方式,第一种,咱们能够本身写一个pre-commit,也能够安装pre-commit npm包,咱们这里采用了第一种方式,也是由于shell脚本比较通用,到此为止,咱们在本地已经开发完成了一个命令行,在咱们将咱们写的pre-commit,移入到git hooks下面的时候,记得要加权限, chmod +x pre-commit
前端工程化
pre-commit如何编写,相信网上有不少了,这里我给一个大概的实现思路 首先是获取到你要eslint的代码,bash
JS_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E "(\.js?)$")
CSS_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep -E "(\.p?css)$")
复制代码
而后调用本身的eslint命令, oishi lintjs --exitcode $JS_FILES
最后判断返回值, 有一个小坑的地方在于你的入口文件处,你要声明一下本身的node路径 #!/usr/bin/env node
3.结尾工做
咱们在npm上注册一个本身的帐号,而后切换到项目目录下,
npm login
npm publish
复制代码
对于一些具体的技术细节能够参见我项目中的源码,也能够在个人博客中评论留言