0

我正在使用 npm 运行构建,并且正在尝试使用 cmd 行标志覆盖我的 .npmrc 配置选项。但是 npm 坚持将这些标志直接传递给我的脚本,而不是像文档中描述的那样将它们作为配置选项读取。我究竟做错了什么?

从 cmd 行我尝试像这样构建一个 Tizen pacakge:

npm run package --tizen_profile myprofile

在我的 package.json 我有:

"package": "tizen package -t wgt --sign $npm_package_config_tizen_profile -- .buildResult/wgt -o .buildResult/wgt"

运行命令的结果是:

package: `tizen package -t wgt --sign $npm_package_config_tizen_profile -- .buildResult/wgt -o .buildResult/wgt "myprofile"`

它应该在哪里:

package: `tizen package -t wgt --sign "myprofile"_tizen_profile -- .buildResult/wgt -o .buildResult/wgt`

就像 npm 只是将 cmd 行参数附加到脚本命令,而不是像文档中描述的变量那样将其插入:https ://docs.npmjs.com/misc/config

是否有最近对 npm 的更新弃用并删除了此功能?我刚刚更新到 npm 6.x,但它也在 5.x 上以这种方式工作。

4

2 回答 2

1

您可以尝试在package.json没有--sign标志的情况下重写您的脚本,例如:

"package": "tizen package -t wgt -- .buildResult/wgt -o .buildResult/wgt"

然后在运行 npm 命令时传递它:

npm run package -- --sign myprofile

我假设您可以更改参数的顺序,因为--sign myprofile现在将在您的命令的最后

更新

这是传递变量并将它们放置在 CLI 命令中的任何位置的另一种方法(不使用npm config set)。在我的package.json

"aaa": "ls $myoptionalflag && $mycmd"

这样,我可以将任何标志传递给la命令(或根本不传递),并且可以将任何 CLI 命令作为mycmd变量传递。所以,现在我可以运行:

myoptionalflag=-la mycmd=pwd npm run aaa

这将执行

ls -la && pwd

或者

mycmd=pwd npm run aaa

这将执行

ls && pwd
于 2018-05-04T17:40:12.247 回答
1

我想到了!

该文档存在缺陷,因为它没有告诉您传递 npm 配置属性的正确语法。我不得不使用:

npm run package --mypackagename:tizen_profile="myprofile"

其中 mypackagename 是 package.json 中使用的名称属性。另请注意,键值语法--key=value--key value文档中描述的不同。同样,--key将是 packagename:key 使用在您的顶层指定的名称package.json

于 2018-05-04T18:05:42.173 回答