Cal*_*v J 3 git npm npm-scripts
我正在尝试制作一个脚本,该脚本仅在 master 是当前签出的分支时才运行...
我设法通过以下方式获取了分支名称:
git rev-parse --symbolic-full-name --abbrev-ref HEAD
Run Code Online (Sandbox Code Playgroud)
但是把它放在一个脚本中,检查它的价值并根据它做一件事或其他事情并不顺利
"foo": "set branch=git rev-parse --symbolic-full-name --abbrev-ref HEAD | if [branch==master]; then echo \"yes\"; else echo \"no\"; fi;"
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
以下将成功运行:
npm 脚本:
"scripts": {
"foo": "branch=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD); if [[ $branch == \"master\" ]]; then echo \"yes\"; else echo \"no\"; fi;"
},
Run Code Online (Sandbox Code Playgroud)
解释:
git命令被包裹在$()-其被称为命令替换。这意味着它将运行git rev-parse ...命令并将其输出分配给branch变量。branch值进行条件检查:if [[ $branch == \"master\" ]]; then ...跨平台:
如果npm run foo在非 Bash 环境(例如 Windowscmd.exe或PowerShell )中执行命令,这显然会失败。如果需要跨平台支持(我猜不是!),那么我建议在node.js脚本中处理此逻辑并child_process.execSync()用于调用git命令。该node.js然后可以通过您的NPM-脚本调用。
| 归档时间: |
|
| 查看次数: |
2434 次 |
| 最近记录: |