我正在创建一个脚本来运行整个'build and push to git'流程。要提交我的更改,我需要包含提交消息,但我希望每次执行都有一个唯一的消息。我可以包含一个bash变量,以便用户可以创建一条消息吗?我基本上想要做一些事情:
//package.json
{
...
"scripts": {
"build:push2Git $message": "npm run build:local ;
npm run build:webpack && git add . && git commit -m $message
&& git push origin my-branch || echo 'Failed to push to git'",
...
}
}
然后脚本将作为`npm run build:push2Git'提交消息#23445'运行。这可能吗?我意识到我的例子可能是非常错误的,只是我想解释我想要什么,以及我认为它会起作用。
只是为了更新我累了的内容,并将其作为bash变量传递不起作用。
所以我试过了:
//package.json
{
...
"scripts": {
"build:push2Git $message": "npm run build:local ;
npm run build:webpack && git add . && git commit -m '$1'
&& git push origin my-branch || echo 'Failed to push to git'",
...
}
}
然后尝试将其称为npm run build:push2Git my_custom_message
。不行。使用提交消息“$ 1”将我的代码推送到我的存储区。
答案 0 :(得分:1)
我不是一名npm编码员,但我确实知道bash。试试这个:
//package.json
{
…
"scripts": {
"build:push2Git": "p2g() { npm run build:local ;
npm run build:webpack && git add . && git commit -m '$@'
&& git push origin my-branch || echo 'Failed to push to git' ; }; p2g",
…
}
}
假设可以使用bash函数并假设脚本像bash别名一样被调用(参数被添加到命令的末尾),这应该允许你以npm run build:push2Git -- "this is a commit message"
的形式调用脚本。 (另见this answer。)
这会建立一个名为p2g()
的shell函数,感谢$@
会吸收你的参数(你真的希望"$@"
正确保留你的间距,但我不知道如何正确转义或格式化JSON以使其工作)。参数似乎需要由--
分隔。
这是一个不使用函数的简单版本:
//package.json
{
…
"scripts": {
"build:push2Git": "git commit",
…
}
}
您可以使用以下内容:npm run build:push2Git -- -m "this is a commit message"