【问题标题】:Custom git hook in package.json with husky使用 husky 在 package.json 中自定义 git 钩子
【发布时间】:2018-04-27 21:39:41
【问题描述】:

我正在尝试在提交时验证提交消息。为此,我使用了 Husky 和 ​​commit-msg 钩子。

但是,由于我也在构建时提交消息验证,因此我希望验证代码在单独的 JS 文件中可用。所以我试图调用一个外部 JS 文件来执行我的提交验证。在我的 package.json 文件中,我有:

"commitmsg": "node validation.js"

但是,我无法正确执行验证。现在,validation.js 看起来像这样:

console.log('Here');
const config = (a, b) => {
  console.log(a);
  console.log(b);
};

module.exports = config;

Here被显示,但函数中的console.logs没有被调用。

知道如何让我的函数被调用吗?另外,如何访问提交消息?

【问题讨论】:

  • “但是,因为我也在构建时进行提交消息验证”,但为什么呢?如果一个预提交钩子验证了消息,怎么可能有一个提交消息没有通过这个构建检查,它必须在 git 钩子之后?
  • 检查有点不同。我们有多种格式的提交消息,并且至少一个“常规提交消息”必须存在于功能分支中。规则相同,但需要额外检查。
  • 感谢您的澄清。

标签: git package.json git-husky


【解决方案1】:

我很傻,我找到了解决方案。以防将来对其他人有用:

const myRegex = new RegExp('.*');
const commitMsg = require('fs').readFileSync(process.env.HUSKY_GIT_PARAMS, 'utf8');

if (!myRegex.test(commitMsg) ) {
  console.error(`Invalid commit message!`);
  process.exit(1);
}

【讨论】:

    猜你喜欢
    • 2021-03-12
    • 2011-05-09
    • 2021-07-07
    • 2020-08-27
    • 2020-03-11
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多