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

Dav*_*ser 5 bash yarnpkg

我有一个 Node/React 项目,在我的package.json 中,如果我想运行一些简单的脚本,我可能会这样做:

{
  "scripts": {
    "prep": "cp -r this/sub-directory/path another/sub-directory/path"
  },
}
Run Code Online (Sandbox Code Playgroud)

然后yarn prep执行它。

但是,在这种情况下,我有很多命令,比如 5-6,并且将它们全部放在 package.json 文件中的一行中会使阅读变得困难。

我想做的是将它们放在一个单独的文件中,然后调用该文件。类似于名为run-script的文件:

#!/bin/bash

echo 'test'
Run Code Online (Sandbox Code Playgroud)

然后在 package.json 中:

{
  "scripts": {
    "prep": "run-script"
  },
}
Run Code Online (Sandbox Code Playgroud)

但这显然给了我错误,我不知道如何告诉它运行文件,它应该是什么扩展名等(我知道我可以做,"prep": "node run-script.js"但在这种情况下,我想做一些简单的事情,例如复制目录等,而不是 JavaScript 的东西。)


更新 [已解决]

需要@roadowl的两种解决方案。

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

小智 3

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

"prep": "/home/me/run-script"
Run Code Online (Sandbox Code Playgroud)

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

此外,当然还要确保运行脚本可以执行:

chmod ug+x run-script
Run Code Online (Sandbox Code Playgroud)