我有一个简单的应用程序,我正在处理它,并通过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