npm - npm 运行脚本,无法访问命令行参数
问题描述
我是一个电子初学者,我正在尝试用它来打包一个基于反应的应用程序。我正在尝试通过 package.json 中的脚本条目运行电子:
"electron-dev": "concurrently \"cross-env BROWSER=none npm start\" \"wait-on http://localhost:3000 && electron . $npm_config_input \"",
这将运行 electron.js(这是 package.json 文件中前面定义的“main”),但我需要传入命令行参数。我已经看到表明 $npm_config_input 将以这种方式传递参数的引用:
% npm run electron-dev --input=file.tif
但是 $npm_config_input 对我来说似乎没有得到扩展。electron.js 获取文字字符串 $npm_config_input。我很困惑为什么这不起作用。
看来我可以通过这样做来避免这个问题:
% npm run electron-dev -- --input=file.tif
但我不知道如何将输入参数与我同时开始使用的第二个命令相关联。如果我可以在其定义中使用 $1 或 $npm_config_input 之类的东西,那就太好了。有人对此有解决方案吗?
我正在使用 git bash 在 Windows 10 上运行它。其他的东西通常有效。我安装了 nodejs 12.16.2。蒂亚!
解决方案
你几乎做对了,只需使用process.argv
.
例如,创建一个名为的文件cmd.js
,如下所示
console.log(process.argv.slice(2));
现在通过添加以下内容为它创建一个脚本挂钩package.json
"scripts": {
"foo": "node cmd.js"
}
现在你可以试试...
$ npm run foo -- arg1 arg2
> foo@1.0.0 foo /tmp/foo
> node cmd.js "arg1" "arg2"
[ 'arg1', 'arg2' ]
推荐阅读
- monitoring - 在 Prometheus 中获取两个自定义时间戳之间的增量
- ios - 可以在 Codable 中使用 NSArray 吗?(将“对象映射器”转换为“可编码”)
- spring-boot - Tomcat 在部署 Spring Boot 应用程序时出错
- c++ - 函数 NetShareGetInfo 总是返回 2310(此共享不存在)
- mercurial - 恢复“hg strip”后丢失的提交
- javascript - 如何只在 div 内按下按键?
- ruby-on-rails - Aws CostExplorer Api 使用 ruby sdk 给出异常
- java - Android房间自定义更新@Query with String array crash with "sqlite syntax ? error"
- mysql - MySql 与实体框架的连接
- javascript - ForEach 不工作,但 For 工作正常