首页 > 解决方案 > 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。蒂亚!

标签: npmelectronnpm-scripts

解决方案


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

推荐阅读