如何使用Node.js在Windows中创建git挂钩?

如何使用Node.js在Windows中创建git挂钩?,node.js,git,githooks,Node.js,Git,Githooks,我一直在遵循关于如何使用Node.js编写git钩子脚本的指南。但是,当我在Windows计算机上运行时,本指南使用的是基于Unix的系统 我还找到了在Windows机器上运行git钩子的指南,但它没有使用Node.js 我正在package.json文件中运行一个脚本来设置自定义git钩子位置 我使用VSCode作为编辑器,希望在使用UI进行提交等操作时运行git钩子。不过,我最初使用命令行尝试启动钩子 package.json摘录 "scripts": { "preinsta

我一直在遵循关于如何使用Node.js编写git钩子脚本的指南。但是,当我在Windows计算机上运行时,本指南使用的是基于Unix的系统

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

  • 我正在package.json文件中运行一个脚本来设置自定义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钩子的过程吗。我宁愿自己创建一个,也不愿使用包

  • 准确地命名钩子
    pre-commit
    ,不使用
    .js

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

  • 将其放置在
    /.git/hooks

  • 使其可执行。在GitBash中,运行
    chmoda+x/.git/hooks/pre-commit

  • 现在,它应该像预期的那样工作

  • 准确地命名钩子
    pre-commit
    ,不使用
    .js

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

  • 将其放置在
    /.git/hooks

  • 使其可执行。在GitBash中,运行
    chmoda+x/.git/hooks/pre-commit


  • 现在,它应该可以像预期的那样工作。

    即使在Powershell中也可以工作。我不知道我是否明白为什么?Powershell如何解释第一行?@Antfish我不太清楚。我认为它最终是在git bash环境中解释的,所以无论您是在cmd、powershell、git bash还是gui工具中运行
    git commit
    ,这都无关紧要。我不知道我是否明白为什么?Powershell如何解释第一行?@Antfish我不太清楚。我认为它最终是在git bash环境中解释的,所以无论您是在cmd、powershell、git bash还是gui工具中运行
    git commit