如何通过单独的文件使用 yarn 运行 bash 脚本?
How to run bash scripts with yarn via a separate file?
我有一个 Node/React 项目,在我的 package.json 中,如果我想 运行 一些简单的脚本,我可能会做这样的事情:
{
"scripts": {
"prep": "cp -r this/sub-directory/path another/sub-directory/path"
},
}
然后yarn prep
执行。
但是在这种情况下,我有很多命令,比如 5-6 条,将它们全部放在 package.json 文件中的一行会让人难以阅读。
我想做的是将它们放在一个单独的文件中,然后调用该文件。类似于名为 运行-script:
的文件
#!/bin/bash
echo 'test'
然后在 package.json:
{
"scripts": {
"prep": "run-script"
},
}
但这显然给我错误,我不知道如何告诉它 运行 文件,它应该是什么扩展名,等等。(我知道我可以做 "prep": "node run-script.js"
但在这种情况下,我想做一些简单的事情,比如复制目录等,而不是 JavaScript 事情。)
更新 [已解决]
@roadowl 的两种解决方案都需要。
- 运行
chmod ug+x run-script
设置权限,然后
- 在package.json:
文件调用位置前添加当前工作目录变量($PWD
)
{
"scripts": {
"prep": "$PWD/run-script"
},
}
我不明白为什么那行不通。
我唯一的建议是用完整路径调用它:
"prep": "/home/me/run-script"
(其中 `/home/me' 是您的主目录,即 'echo $HOME' 打印的目录)。
此外,当然要通过以下操作确保 run-script 可执行:
chmod ug+x run-script
无需设置绝对路径,相对路径 URL 即可,但请记住,如果您指的是同一个文件夹,请不要忘记在前面加上 './'
例如:
"scripts": {
...
"foo": "./foo.sh",
...
}
此外,按照 Roadowl 的建议,您必须设置执行权限
我有一个 Node/React 项目,在我的 package.json 中,如果我想 运行 一些简单的脚本,我可能会做这样的事情:
{
"scripts": {
"prep": "cp -r this/sub-directory/path another/sub-directory/path"
},
}
然后yarn prep
执行。
但是在这种情况下,我有很多命令,比如 5-6 条,将它们全部放在 package.json 文件中的一行会让人难以阅读。
我想做的是将它们放在一个单独的文件中,然后调用该文件。类似于名为 运行-script:
的文件#!/bin/bash
echo 'test'
然后在 package.json:
{
"scripts": {
"prep": "run-script"
},
}
但这显然给我错误,我不知道如何告诉它 运行 文件,它应该是什么扩展名,等等。(我知道我可以做 "prep": "node run-script.js"
但在这种情况下,我想做一些简单的事情,比如复制目录等,而不是 JavaScript 事情。)
更新 [已解决]
@roadowl 的两种解决方案都需要。
- 运行
chmod ug+x run-script
设置权限,然后 - 在package.json: 文件调用位置前添加当前工作目录变量(
$PWD
)
{
"scripts": {
"prep": "$PWD/run-script"
},
}
我不明白为什么那行不通。 我唯一的建议是用完整路径调用它:
"prep": "/home/me/run-script"
(其中 `/home/me' 是您的主目录,即 'echo $HOME' 打印的目录)。
此外,当然要通过以下操作确保 run-script 可执行:
chmod ug+x run-script
无需设置绝对路径,相对路径 URL 即可,但请记住,如果您指的是同一个文件夹,请不要忘记在前面加上 './'
例如:
"scripts": {
...
"foo": "./foo.sh",
...
}
此外,按照 Roadowl 的建议,您必须设置执行权限