npm scripts/package.json - 运行 只有当前在 git master 分支上

npm scripts/package.json - run only if currently on git master branch

我正在尝试制作一个脚本,如果 master 是当前签出的分支,它只会 运行...

我设法获得了分支名称:

git rev-parse --symbolic-full-name --abbrev-ref HEAD

但是把它放在脚本中,检查它的值并根据它做某事或其他事情并不顺利

"foo": "set branch=git rev-parse --symbolic-full-name --abbrev-ref HEAD | if [branch==master]; then echo \"yes\"; else echo \"no\"; fi;"

有什么想法吗?

以下将成功运行:

npm-script:

"scripts": {
  "foo": "branch=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD); if [[ $branch == \"master\" ]]; then echo \"yes\"; else echo \"no\"; fi;"
},

解释:

  • git 命令包含在 $() 中 - 也就是众所周知的 command substitution。这意味着它将 运行 git rev-parse ... 命令并将其输出分配给 branch 变量。
  • 随后,使用以下条件检查 branch 值:if [[ $branch == \"master\" ]]; then ...

跨平台:

如果 npm run foo 命令在非 Bash 环境中执行,这显然会失败,例如 Windows cmd.exePowerShell.如果需要跨平台支持(我猜不是!),那么我建议在 node.js 脚本中处理此逻辑并利用 child_process.execSync() 调用 git 命令。然后可以通过您的 npm 脚本调用 node.js