Use gruntjs as precommit hook

2019-03-26 06:22发布

Is there a way to run a gruntjs task as precommit hook. For example I want do prevent commits with failing tests or jshint issues. I've also think about to run a code beautifier for every commit.

3条回答
虎瘦雄心在
2楼-- · 2019-03-26 06:29

Git hooks are just scripts executed when you do an action like commit. They can contain whatever programming language you'd like.

Example of triggering grunt:

#!/bin/sh
grunt

Save this in the file: .git/hooks/pre-commit

If grunt exits with an error code higher than 0, which it does if any task fail, it will prevent the commit:

Exiting non-zero from this hook aborts the commit


Reading material: http://codeinthehole.com/writing/tips-for-using-a-git-pre-commit-hook/

And the git docs: http://git-scm.com/book/en/Customizing-Git-Git-Hooks

Like many other Version Control Systems, Git has a way to fire off custom scripts when certain important actions occur.

查看更多
虎瘦雄心在
3楼-- · 2019-03-26 06:29

I recently had the same issue and detailed a more comprehensive Grunt solution on http://viget.com/extend/grunt-getting-started-with-git-hooks

查看更多
爷、活的狠高调
4楼-- · 2019-03-26 06:38

I think you should check out grunt-githooks, a nice Grunt plugin that does all the magic for you and lets you easily register Grunt tasks for certain hooks from within your Gruntfile.js, such as:

grunt.initConfig({
  githooks: {
    all: {
      // Will run the jshint and test:unit tasks at every commit
      'pre-commit': 'jshint test:unit',
    }
  }
});

(Taken from the docs at https://github.com/wecodemore/grunt-githooks#defining-a-few-hooks)

Find the module on npm here.

查看更多
登录 后发表回答