用 git 钩子,检测代码规范性(eslint、standard)

终究完成结果申明:
用 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 博客:传送门

    原文作者:gauseen
    原文地址: https://segmentfault.com/a/1190000013579395
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞