最终实现效果说明:
用 git commit 提交代码之前,利用 pre-commit git 钩子,实现代码规范检测(eslint、standard 规范),符合规范之后才可以提交到 git 仓库。这样在团队合作开发时,可以统一代码风格,如果某些同志代码不符合规范,是无法进行提交代码的。

我的demo地址:
demo地址

规范doc:
standard规范
eslint规范

git 钩子
git 钩子

那么问题来了,这种验证是如何实现的呢?!

请确保已经安装了: node | npm | git
安装传送门:node | npm | git

先说一下我的目录结构:

               |——node_modules            # 项目资源依赖(npm install 之后出现改文件夹)
|
pre-commit ——— |——src —— test.js # 项目代码(项目业务逻辑)
|
|——package.json # 本地安装 npm 包 (npm init 之后出现该文件)

一、步骤如下(下面是 standard 规范验证):

  • 先按照鄙人的目录先创建目录,然后先后执行如下命令:

       git init                                    // 将本地项目设置为 git 项目
    git remote add origin url // url 为自己的 git 仓库地址
    npm init // 将 pre-commit 项目设置为 npm 项目
    npm install --save-dev standard // 安装 standard 规范
    npm install --save-dev husky@next // 安装 husky git 钩子
    npm install --save-dev snazzy // 安装 snazzy ,美化 standard 报错提示,eslint 规范不需要安装
  • 安装好依赖资源后,更改 package.json 文件

    // package.json
    {
    "husky": {
    "hooks": {
    "pre-commit": "standard \"src/**/*.{js,vue,wpy}\" | snazzy",
    }
    }
    }
    注:检测 src 目录下的所有文件后缀为 .js || .vue || .wpy 的文件编码,是否符合规范。
    若不符合,git 钩子将会阻止 git 继续 commit, 并且会报出错误信息;
    若符合代码规范,git commit 就会成功提交到本地仓库。

当然你可以绕过代码检测强制提交:

git add . && git commit --no-verify -m "代码规范强制提交测试"

standard 规范错误提示如下:

// standard 规范默认错误提示:
D:\pre-commit\src\test.js:2:19: Extra semicolon.
------------------------------------------------
// 利用 snazzy 美化后的错误提示:
2:19 error Extra semicolon
✖ 1 problem

二、步骤如下(下面是 eslint 规范验证):

  • 先按照鄙人的目录先创建目录,然后先后执行如下命令:

       git init                                    // 将本地项目设置为 git 项目
    git remote add origin url // url 为自己的 git 仓库地址
    npm init // 将 pre-commit 项目设置为 npm 项目
    npm install --save-dev eslint // 安装 eslint 规范
    npm install --save-dev husky@next // 安装 husky git 钩子 注意,执行命令:
    $ ./node_modules/.bin/eslint --init // 生成 .eslintrc.js 文件,可自定义代码风格

    注:eslint 自定义代码规范详情 传送门;.eslintrc.js配置详解传送门

  • 安装好依赖资源后,更改 package.json 文件

    // package.json
    {
    "husky": {
    "hooks": {
    "pre-commit": "eslint \"src/**/*.{js,vue,wpy}\"",
    }
    }
    }

当然你可以绕过代码检测强制提交:

git add . && git commit --no-verify -m "代码规范强制提交测试"

eslint 规范错误提示如下:

// eslint 规范错误提示

D:\fe\pre-commit\src\test.js
1:13 error Strings must use doublequote quotes
1:28 error Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style
1:28 error Missing semicolon semi
2:1 error Unexpected console statement no-console
2:20 error Expected linebreaks to be 'LF' but found 'CRLF' linebreak-style ✖ 5 problems (5 errors, 0 warnings)
✖ 1 problem

按照相应的错提示,更改代码,符合规范后,即可提交到 git 仓库。

声明:有任何问题欢迎留言!未经作者同意禁止转载!谢谢!

欢迎访问我的 git 博客:传送门

用 git 钩子,检测代码规范性(eslint、standard)的更多相关文章

  1. 利用Git钩子实现代码发布

    目录 1.什么是git钩子 2.安装一个钩子 3.常用的钩子脚本类型 3.1 客户端钩子 3.1.1 pre-commit 3.1.2 prepare-commit-msg 3.1.3 commit- ...

  2. maven项目配置findbugs插件 使用git钩子控制代码的提交

    maven项目配置findbugs插件对代码进行静态检测 当发现代码有bug时,就不让用户commit代码到远程仓库里 没有bug时才可以commit到远程仓库中 (1)新建maven项目 ,配置fi ...

  3. 使用 Eslint & standard 规范前端代码

    前言 JavaScript的动态语言类型,给它带来了独特的魅力,产生了风格多样的开发范式,同时也带来了一些问题,从运行时常见的 undefined .null 报错,到代码随意的加减分号.换行.空格, ...

  4. Vue+ESLint+Git钩子函数pre-commit配置教程

    一.创建Vue项目eslint-standard vue create eslint-standard 二.创建.eslintrc.* 删除package.json中的eslintConfig配置 我 ...

  5. 一款检测代码中TODO的eslint插件

    一款检测代码中TODO的eslint插件 前言 看了我标题进来的同学应该也知道我做的是个啥东西 没错是一个eslint插件,前端魔法师们日常所使用的工具之一 什么?你不知道eslint是干嘛的--吃鲸 ...

  6. Git 钩子

    1. 概念概述 1.1. 安装钩子 1.2. 脚本语言 1.3. 钩子的作用域 2. 本地钩子 2.1. 预提交钩子 Pre-Commit 2.2. 准备提交信息钩子 Prepare Commit M ...

  7. 关于执行findbugs,checkstyle,jacoco插件检测代码,GitHook的脚本编写

    Git钩子的作用: (pre-commit ) 在用户执行 git commit -m "xxx" 命令之前,先执行pre-commit文件中的脚本命令 在pre-commit文件 ...

  8. Git钩子:自定义你的工作流

    Git钩子是在Git仓库中特定事件发生时自动运行的脚本.它可以让你自定义Git内部的行为,在开发周期中的关键点触发自定义的行为. Git钩子最常见的使用场景包括推行提交规范,根据仓库状态改变项目环境, ...

  9. 通过Gradle Plugin实现Git Hooks检测机制

    背景 项目组多人协作进行项目开发时,经常遇到如下情况:如Git Commit信息混乱,又如提交者信息用了自己非公司的私人邮箱等等.因此,有必要在Git操作过程中的适当时间点上,进行必要的如统一规范.安 ...

随机推荐

  1. Yahoo!团队:网站性能优化的35条黄金守则

    Yahoo!的 Exceptional Performance团队为改善 Web性能带来最佳实践.他们为此进行了一系列的实验.开发了各种工具.写了大量的文章和博客并在各种会议上参与探讨.最佳实践的核心 ...

  2. Listening-lecture|主旨题|术语解释|举例原则|Crash course 哔哩哔哩

    Listening-lecture: Major topic: SP1---detail---detail---detail SP2---detail---detail---detail Crash ...

  3. linux打开和关闭端口

    查看哪些端口被打开  netstat -anp 关闭端口号:iptables -A INPUT -p tcp -drop 8080 -j DROP 打开端口号:iptables -A INPUT -p ...

  4. python运行报错——注释报错

    本人是IT行业的,从事软件测试,还是个菜鸟.希望大神们多多关照~ 首先,开通这个博客的目的: 1)通常我容易犯一些低级的错误,而且在网上找到解决方法,解决之后时间长了又不记得: 2)想和有共同兴趣的人 ...

  5. axious设置携带cookie同时允许跨域的问题

    axious设置携带cookie同时允许跨域的问题

  6. jquery框架概览(一)

    参照jQuery 2.0.3版本(http://files.cnblogs.com/files/snoy/jquery-2.0.3.js")来进行的源码分析 从代码的最外层可以看到是一个II ...

  7. smarty应用1 之 模板进行数学运算,保留小数位数

    例子1 乘法除法运算: 1格式:{$number|number_format} 保留小数点后2位小数. {$v/$total*100|string_format:"%0.2f"|c ...

  8. generate的使用verilog

    根据项目设计的需要,要实例化多个类似的模块,这些类似的模块包括方波波形发生器,这几个模块基本相同,除了参数传递值不同,其他他部分都是相同的 具体实现代码如下: 此外有计数模块的例化,这个模块例化多个的 ...

  9. 吴裕雄--天生自然python学习笔记:Python3 日期和时间

    Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间. 时间间隔是以秒为单位的浮点小数. ...

  10. 吴裕雄--天生自然python学习笔记:Python3 JSON 数据解析

    JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进 ...