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

问题描述 投票:0回答:1

我是一个电子的初学者,我想用它来打包一个基于react的应用程序。 我试图通过package.json中的一个脚本条目来运行electron。

"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的东西就更好了。 有谁有解决这个问题的办法吗?

我在Windows 10上使用git bash运行这个。 其他的东西一般都能用。 我安装了nodejs 12.16.2。 TIA!

npm electron npm-scripts
1个回答
0
投票

你几乎做对了,只要用 process.argv.

例如,创建一个名为 cmd.js 貌似

console.log(process.argv.slice(2));

现在为它创建一个脚本钩子,添加以下内容到 package.json

"scripts": {
  "foo": "node cmd.js"
}

现在你可以试试...

$ npm run foo -- arg1 arg2

> [email protected] foo /tmp/foo
> node cmd.js "arg1" "arg2"

[ 'arg1', 'arg2' ]

0
投票

我相信我已经找到了答案。 在electron.js中,我打印了process.argv,看看那里是否有什么有用的东西。 事实证明,当我运行这个时,process.env.npm_config_input包含file.tif。

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

这对我来说应该是可行的 我还是不明白,为什么我读到的其他东西和试过的东西都没有用。

© www.soinside.com 2019 - 2024. All rights reserved.