如何通过单独的文件使用yarn运行bash脚本?

时间:2019-06-28 12:55:14

标签: bash yarnpkg

我有一个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都需要解决方案。

  1. 运行chmod ug+x run-script设置权限,然后
  2. package.json 中调用文件的位置的前面添加当前工作目录变量($PWD):
{
  "scripts": {
    "prep": "$PWD/run-script"
  },
}

2 个答案:

答案 0 :(得分:2)

无需设置绝对路径,相对URL可以正常工作,但是请记住,如果您要引用的是同一文件夹,请不要忘记在'./'前面加上

例如:

"scripts": {
   ...
   "foo": "./foo.sh",
   ...
}

此外,如Roadowl所建议,您必须设置执行权限

答案 1 :(得分:0)

我不明白为什么这行不通。 我唯一的建议是使用完整路径进行调用:

"prep": "/home/me/run-script"

(“ / home / me”是您的主目录,即'echo $ HOME'打印的目录)。

此外,当然,请通过执行以下操作确保run-script是可执行的:

chmod ug+x run-script