使用cross-env向NPM脚本传递CLI参数



我有一个简单的应用程序,我正在处理它,并通过npm script调用它。剧本做了两件事。首先设置NODE_ENV环境变量。其次,它调用node index.js

我希望NODE_ENV的值可以通过命令行参数进行配置,所以我想要这样的东西:

"scripts": {
"test:integration": "cross-env NODE_ENV=%env% node index.js"
}

然后我可以从命令行这样调用它:

npm run test:integration --env=dev-integration

根据我所读到的内容,考虑到NPM有一种将命令行参数传递给脚本的内置方式,这应该是可能的。SO的回答详细说明如下:https://stackoverflow.com/a/64694166/2951367.

然而,我无法让它发挥作用。当我运行这个时,我得到以下错误:

> cross-env NODE_ENV=%env% node index.js
WARNING: NODE_ENV value of '%env%' did not match any deployment config file names.
WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
%env%

所以我可以看到%env%参数并没有解决传入的内容。我在windows上,但我也需要它在linux上工作,所以我认为cross-env可能会工作,但它不工作。我也不能把它用在窗户上。

你知道如何让它发挥作用吗?

以上评论中提供的答案是正确的,即@RobC的答案通过对语法进行一些小的调整,我能够从cli中获取env变量。谢谢@RobC感谢您的帮助。。。

下面是我用来从cli获取ENV值的代码,供参考:

"test": "ts-node -e \"const env = process.env; env.ENV = process.env.npm_config_env; require('child_process').execSync('npx wdio ./src/main/config/wdio.conf.ts', {env: env, stdio: 'inherit'});\""

使用以下命令运行:

npm run test --env=test.

注意:我正在使用ts节点并执行WebdriverIO脚本。

谨致问候,Suraj Mishra

最新更新