【问题标题】:npm scripts/package.json - run only if currently on git master branchnpm scripts/package.json - 仅在当前位于 git master 分支上时运行
【发布时间】:2019-01-23 12:00:45
【问题描述】:

我正在尝试制作一个仅在 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;"

有什么想法吗?

【问题讨论】:

    标签: git npm npm-scripts


    【解决方案1】:

    以下将成功:

    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 变量。
    • 随后,通过使用 if [[ $branch == \"master\" ]]; then ...branch 值进行条件检查:

    跨平台:

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

    【讨论】:

    • 太棒了 - 非常感谢 RobC,效果很好:-)
    猜你喜欢
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 2014-09-17
    • 2012-07-26
    • 2016-07-24
    • 1970-01-01
    相关资源
    最近更新 更多