gpt4 book ai didi

javascript - npm 脚本使用 yargs 将参数/参数传递给节点脚本

转载 作者:可可西里 更新时间:2023-11-01 02:08:24 25 4
gpt4 key购买 nike

当用作 npm 脚本参数时,是否可以调出从 yargs 检索 key ?

OSX 终端中的用户类型:

npm run scaffold --name=blah

在 package.json 中执行:

"scaffold" : "node ./scaffold/index.js -- "

这导致

const yargs = require('yargs').argv

if (yargs) {
console.log(yargs);
console.log(yargs.name);
process.exit(1)
}
...
result:
{ _: [], '$0': 'scaffold/index.js' }
undefined

这仅在我在 package.json "scaffold": "node scaffold/index.js --name=blah" 中硬编码时有效,但我需要它是可配置的。

正如我所说,我正在使用 args,因为它似乎可以很容易地按名称(而不是数组)检索键。接受建议。

我错过了什么?

更新 11-07-2017相关:Sending command line arguments to npm script

但是,传入命令行 1: npm run scaffold name=hello
2: npm run scaffold --name=hello 产生:

1: { _: [], '$0': 'scaffold/index.js' }
2: { _: [ 'name=hello' ], '$0': 'scaffold/index.js' }

仍然看不到检索 yargs.name 属性的方法。仍未定义。


2017 年 7 月 13 日更新

暂时我放弃了。这似乎是不可能的。我在终端中手动运行脚本。例如

node ./scaffold/index.js --name=blah 

下图显示了直接执行节点脚本,而不是通过 npm 脚本运行。我添加了https://www.npmjs.com/package/nopt节点模块,看看它是否有帮助(它没有)。 process.argv.name 在通过 npm 脚本运行时仍然未定义。

enter image description here


2017 年 7 月 18 日更新

添加了 github 示例:https://github.com/sidouglas/stackoverflow-node-arguments


更新 24-07-2017

在命令开始之前添加变量myvar="hello npm run scaffold 相对于 npm run scaffold myvar="hello world"

最佳答案

从 npm@2.0.0 开始,您可以在执行脚本时使用自定义参数。特殊选项 -- 由 getopt 使用来分隔选项的结尾。 npm 会将 -- 之后的所有参数直接传递给您的脚本:

npm run test -- --grep="pattern"

https://docs.npmjs.com/cli/run-script

关于javascript - npm 脚本使用 yargs 将参数/参数传递给节点脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com