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

npm run script, can't access command line args

我是一个 electron 初学者,我正在尝试用它来打包一个基于 react 的应用程序。我正在尝试通过 package.json:

中的脚本条目 运行 electron
"electron-dev": "concurrently \"cross-env BROWSER=none npm start\" \"wait-on http://localhost:3000 && electron . $npm_config_input \"",

那将 运行 electron.js(这是 "main" 在 package.json 文件中定义的),但我需要传入一个命令行参数.我已经看到表明 $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 之类的东西,那就太好了。有人对此有解决方案吗?

我 运行 在 Windows 10 使用 git bash 进行此操作。其他事情通常有效。我安装了 nodejs 12.16.2。 TIA!

你几乎做对了,就用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' ]

我相信我已经找到了答案。在electron.js中,我打印了process.argv,看看有没有什么用处。结果 process.env.npm_config_input 包含 file.tif 当我 运行 这个:

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

这应该适合我。我仍然不明白为什么我阅读和尝试过的其他方法都不起作用。