我有一个简单的应用程序,通过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内置了一种传递命令行参数到脚本的方式,这应该是可行的。这个 Stack Overflow 的答案详细介绍了它:https://dev59.com/HlUK5IYBdhLWcg3wuB54#64694166。
然而,我无法让它正常工作。当我运行时,我会得到以下错误:
> 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
,但它不行。我在 Windows 上也无法使其工作。
你有什么想法可以让这个工作吗?
"test:integration": "node -e \"const env = process.env; env.NODE_ENV = process.env.npm_config_env; require('child_process').execSync('node ./index.js', {env: env, stdio: 'inherit'});\""
2) 运行以下命令:npm run test:integration --env=dev-integration
。 - RobC