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

时间:2018-08-16 13:42:01

标签: git npm npm-scripts

我正在尝试创建仅在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;"

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

以下内容将成功运行:

npm脚本:

"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 ...值进行条件检查

跨平台:

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