bash - 如何通过单独的文件使用 yarn 运行 bash 脚本?
问题描述
我有一个 Node/React 项目,并且在我的package.json中,如果我想运行一些简单的脚本,我可能会这样做:
{
"scripts": {
"prep": "cp -r this/sub-directory/path another/sub-directory/path"
},
}
然后yarn prep
执行它。
但是在这种情况下,我有很多命令,比如 5-6 并且将它们全部放在 package.json 文件中的一行会使其难以阅读。
我想做的是将它们放在一个单独的文件中,然后调用该文件。类似于名为run-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
推荐阅读
- docker - 如何在具有共享卷的 2 个容器之间更新文件
- ios - gateway.push.apple.com 和 api.push.apple.com 之间的区别
- windows - 尝试将卷附加到容器内的 C:\ 时,Docker 窗口抛出错误
- php - Laravel 6.x - 'create()' 使用数据库默认值的记录
- logging - Clojure - 如何暂时禁用日志记录?
- sql - 使用 crypt_gen_random 生成唯一的序列号
- python - python列表+空numpy数组=空numpy数组?
- google-apps-script - Google 脚本属性会更改类型吗?
- angular - 带有 switchMap 和 catchError 的 NgRx 效果 - 有人可以解释我的代码和“正确”代码之间的可观察工作流程的区别吗?
- java - Java 运行终端命令并发送输入