【问题标题】:How to create git hooks in Windows with Node.js?如何使用 Node.js 在 Windows 中创建 git 挂钩?
【发布时间】:2020-08-22 16:31:03
【问题描述】:

我一直在关注this 指南,了解如何使用 Node.js 编写 git 挂钩脚本。但是,当我在 Windows 机器上运行时,该指南使用的是基于 Unix 的系统。

我还找到了this 在 Windows 机器上运行 git hooks 的指南,但它没有使用 Node.js

  • 我正在我的 package.json 文件中运行 pre-install 脚本来设置自定义 git 挂钩位置。
  • 我使用 VSCode 作为我的编辑器,并希望在我使用 UI 进行提交等时运行 git 挂钩。但是我最初使用命令行来尝试触发挂钩。

package.json 摘录

  "scripts": {
    "preinstall": "git config core.hooksPath ./git.hooks"
  },

在我的git.hooks 文件夹中,我有一个pre-commit.js 文件。

我已更新第一行以反映我想执行运行 Node.js 的脚本的事实

pre-commit.js

#!C:/Program\ Files/nodejs/node.exe

console.log('Hello world!');

process.exit(1);

如果我直接运行此脚本,则会收到 Microsoft JScript 编译错误 - 第 1 行 char 1 上的字符无效。

如果我进行提交,我不会收到任何错误,但什么也不会发生。

谁能指导我完成在 Windows 中创建 Node.js 挂钩的过程。我宁愿自己创建一个也不愿使用包。

【问题讨论】:

    标签: node.js git githooks


    【解决方案1】:
    1. 将钩子准确命名为pre-commit,不带.js

    2. 将第一行更改为#!/usr/bin/env node。但请确保C:/Program\ Files/nodejs/node.exe 已添加到环境变量PATH

    3. 将其放入<repo>/.git/hooks

    4. 使其可执行。在 git-bash 中,运行 chmod a+x <repo>/.git/hooks/pre-commit

    现在它应该可以按预期工作了。

    【讨论】:

    • 即使在 Powershell 中也可以。我不确定我明白为什么? Powershell 如何解释第一行?
    • @Antfish 我不太清楚。我认为它最终是在 git bash 环境中解释的,所以不管你是在 cmd、powershell、git bash 还是 gui 工具中运行git commit
    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-13
    • 2014-03-03
    • 1970-01-01
    • 2020-12-19
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多