npm运行脚本,无法访问命令行参数

时间:2020-06-11 01:10:51

标签: npm electron npm-scripts

我是电子初学者,我正试图用它来打包基于反应的应用程序。我试图通过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似乎并没有为我扩展。 electro.js获取文字字符串$ npm_config_input。我很困惑为什么这不起作用。

看来我可以通过以下方法避免此问题:

% npm run electron-dev -- --input=file.tif

但是我不知道如何将输入参数与同时开始使用的第二个命令相关联。如果我可以在其定义中使用诸如$ 1或$ npm_config_input之类的东西,那就太好了。有人对此有解决方案吗?

我正在Windows 10上使用git bash运行它。其他事情通常都可以。我已经安装了nodejs 12.16.2。 TIA!

2 个答案:

答案 0 :(得分:0)

您几乎完全正确,只需使用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' ]

答案 1 :(得分:0)

我相信我找到了答案。在electron.js中,我打印了process.argv,看那里是否有任何用途。事实证明,运行此文件时process.env.npm_config_input包含file.tif:

% npm run electron-dev --input=file.tif

这应该对我有用。我仍然不明白为什么我阅读和尝试过的其他内容不起作用。

相关问题