如何通过单独的文件使用 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 的两种解决方案都需要。

  1. 运行chmod ug+x run-script设置权限,然后
  2. package.json:
  3. 文件调用位置前添加当前工作目录变量($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 的建议,您必须设置执行权限