【问题标题】:Run script with variables from package.json?使用 package.json 中的变量运行脚本?
【发布时间】:2018-06-13 11:34:55
【问题描述】:

我在一个 Node.js 项目上工作,并且经常在 bash 中运行如下所示的命令:

path/to/file/1 --flags path/to/file/2 --flags somecommand

命令基本相同,我一直只更改path/to/file/2。现在我想在我的package.json 文件中实现一个脚本,这样我就可以运行这样的东西:

npm run scriptcommand path/to/file/2

我对 bash 了解不多,但我觉得我的 package.json 文件中需要这样的东西:

{
  "scripts": {
    "scriptcommand": "path/to/file/1 --flags $1 --flags somecommand"
  }
}

有没有可能用上面例子中的变量替换path/to/file/2,这样我就可以在每次运行时设置不同的路径?

【问题讨论】:

    标签: node.js bash package.json


    【解决方案1】:

    创建一个新文件来保存你的脚本

    scriptcommand.sh

    #!/usr/bin/env bash
    path/to/file/1 --flags $1 --flags somecommand
    

    可能需要修改一下

    sudo chmod +x scriptcommand.sh

    package.json

    {
      "scripts": {
        "scriptcommand": "scriptcommand.sh"
      }
    }
    

    然后运行它使用

    npm run scriptcommand -- "path/to/file/2"

    注意 -- 这告诉 npm 将任何剩余的参数传递给你的脚本。

    【讨论】:

      【解决方案2】:

      您可以尝试以下方法:

      "scripts": {
          "scriptcommand": "/bin/echo --flags $FLAGS --flags somecommand"},
      

      FLAGS="path/to/file/2" npm run scriptcommand

      基本上,您设置了一个环境变量,您可以在脚本命令中使用它。

      【讨论】:

      • 奇怪。您使用什么操作系统/bash 版本?你能粘贴你试图调用的确切命令吗?您也可以尝试:FLAGS="path/to/file/2"; npm run scriptcommand (with ';') 请注意,这将为后续命令保留变量集,除非您取消设置/更改其值。
      猜你喜欢
      • 2018-12-03
      • 2016-12-05
      • 2019-07-28
      • 2020-04-15
      • 1970-01-01
      • 2018-07-25
      • 2020-03-04
      • 2020-07-27
      • 2018-10-17
      相关资源
      最近更新 更多