前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用commander做一个自己的eslint脚手架

用commander做一个自己的eslint脚手架

作者头像
2014v
发布2019-11-20 11:30:44
8740
发布2019-11-20 11:30:44
举报
文章被收录于专栏:2014前端笔记2014前端笔记

如今前端工程化,自动化已经成为了新趋势,如果我们要重新开始做一个项目,你会花费多久的时间在前期环境的搭建上呢?在我们前端的的积累中,我们需要将这些技术沉淀下来,便于我们开始一个新的项目,而不必花费过多的经历在环境搭建中。

这次我做的是一个集成了 eslint、stylelint、git hook 的前端代码检查工具。项目已经开源在github上,名字叫做oishi,一开始想起名叫husky(哈士奇),后来这个名字被占了(无奈脸)。

先来理一下我们这个工具需要做什么事情

  1. 需要让他初始化eslint,stylelint的配置文件
  2. 安装好我们需要的依赖
  3. 挂载git钩子,在代码提交时进行进行eslint检查

有了目标我们开始实现我们这样的一个工具:

1.准备工作

  • 这次我们采用commander来开发我们的命令行,
  • 利用chalk来美化我们控制台的输出,
  • 利用shelljs来执行我们文件中的一些脚本

在本地调试时需要在package.json中配置bin选项,然后开发好后npm link 发布到本地的全局,就可以开始使用自己的命令行了

2.进入正题

对于之前提到的第一点,我们首先要有自己的一个配置,在初始化的时候将它拉下来,我们在这里将自己的配置扔到了github的仓库中,可以参考一下我的项目目录配置文件,从github上拉下来后利用node原生的fs模块读写配置文件。

我们所需要的依赖项目也都会记录在配置文件中,读取文件后与当前目录下的package.json对比一下,利用shell执行安装缺少的依赖即可

挂载git钩子,有两种方式,第一种,我们可以自己写一个pre-commit,也可以安装pre-commit npm包,我们这里采用了第一种方式,也是因为shell脚本比较通用,到此为止,我们在本地已经开发完成了一个命令行,在我们将我们写的pre-commit,移入到git hooks下面的时候,记得要加权限, chmod +x pre-commit pre-commit如何编写,相信网上有很多了,这里我给一个大概的实现思路 首先是获取到你要eslint的代码,

代码语言:javascript
复制
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上注册一个自己的账号,然后切换到项目目录下,

代码语言:javascript
复制
npm login
npm publish

对于一些具体的技术细节可以参见我项目中的源码,也可以在下方评论留言

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档