npm - 为什么 npm 将 cmd 行标志直接传递给我的脚本?
问题描述
我正在使用 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 上以这种方式工作。
解决方案
您可以尝试在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
推荐阅读
- apache-spark - 点燃RDD火花
- matlab - 如何在 Matlab App 设计器中使用(excel /database /sheets)进行计算?
- tfs - TFS 查询以在功能或用户故事的接受标准字段中获得空白(或)没有条目
- python - 修改 plotly 布局 y 轴
- azure - 如何从 WSO2 EI/ESB 向 Azure 服务总线主题发布消息?
- c# - 从 Open Xml Sdk 关闭/处理 WordprocessingDocument 远离更改 文件的修改日期
- c# - 来自 SA1210 的 Visual Studio 以错误的顺序对使用进行排序
- python - 无法转发用户提交的查询参数
- java - 在java中执行bash
- gcc - Red Hat 上的 GCC 8.3.1-3 在具有使用模板参数的静态函数的模板类上失败