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

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

标签: bashyarnpkg

解决方案


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

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

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

而且,此外,当然要确保 run-script 是可执行的:

chmod ug+x run-script

推荐阅读