当前位置: 首页 > 知识库问答 >
问题:

将参数传递给package.json中的npm脚本[重复]

田兴朝
2023-03-14

是否有方法在package.json命令内传递参数?

"scripts": {
  "test": "node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet"
}

clinpm运行测试8080生产

然后在mytest.js上,我想用process.argv获取参数

共有1个答案

慕容品
2023-03-14

注意:它仅适用于shell环境,不适用于Windows cmd。您应该在Windows上使用bash,比如Git bash。如果您使用的是win10,请尝试Linux子系统。

为了将参数传递给npm脚本,为了安全起见,您应该在-之后提供它们。

在您的情况下,--可以省略。它们的行为相同:

npm run test -- 8080 production
npm run test 8080 production

但是,当参数包含选项(例如,-p)时,--是必需的,否则npm将解析它们并将其视为npm的选项。

npm run test -- 8080 -p

参数只是附加到要运行的脚本中。您的$1$2将无法解析。npm实际运行的命令是:

node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet "8080" "production"

为了使position变量在npm脚本中工作,请将命令包装在shell函数中:

"scripts": {
  "test": "run(){ node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet; }; run"
}

或者使用scripty工具将脚本放入单个文件中。

package.json:

"scripts": {
  "test": "scripty"
}

脚本/测试:

#!/usr/bin/env sh
node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet
 类似资料:
  • 当用作npm脚本参数时,是否可以调用从yargs检索密钥? OSX终端中的用户类型: 执行package.json: 这导致了 只有在package.json中硬编码时,这才有效,但我需要它是可配置的。 正如我所说的,我使用的是args,因为它似乎可以很容易地按名称检索键(与数组相反)。接受建议。 我错过了什么? 更新11-07-2017相关:发送命令行参数到npm脚本 但是,传入命令行OR会产生

  • 问题内容: 我有一个名为的MySQL脚本文件,其中包含: 我在MySQL控制台中,如何将参数传递给脚本?这不会转发变量: 问题答案: 您可以使用用户变量来实现您描述的行为。在将变量用作模式标识符而不是数据值时,必须使用准备好的语句,以便可以动态组成查询。 : 调用为

  • 我正在尝试从使用自由式詹金斯构建切换到管道项目。 我喜欢它的许多方面,但我希望我可以使用多分支管道,因为它更适合我们公司,但目前这不是一个选择。 我们目前所做的是创建一个名为

  • 问题内容: 是否可以通过命令行将参数传递给MySQL脚本? 在此示例中,类似于@start_date的内容: 问题答案: 发现在网络上的答案在这里。 基本上,假设我们要运行以下查询: 我们可以这样传递“ start_date”和“ end_date”:

  • 问题内容: 我有一个Linux bash脚本“ myshell”。我希望它读取两个日期作为参数,例如:。我是Java程序员,但不知道如何编写脚本来完成此任务。 脚本的其余部分如下所示: 问题答案: 您在脚本中使用,例如

  • 如果不满足所需的参数计数,我希望我的Bash脚本打印一条错误消息。 由于某种未知的原因,我出现了以下错误: 我做错了什么?