node.js - 将变量从 NPM 脚本传递到 Webpack

标签 node.js npm webpack npm-scripts

我有一个使用 Webpack 的生产构建,它使用 Node 的 process.env 来设置环境变量:

webpack.prod.babel.js:

const DefinePlugin = new webpack.DefinePlugin({
  'process.env': {
    NODE_ENV: JSON.stringify('production'),
    API_URL: JSON.stringify('https://myprodurl.com'),
  },
});

packge.json:

"scripts: {
  "build:prod": "webpack"
}

它工作正常,但我需要一些不同的东西。

我需要在 NPM 脚本中将生产 url 设置为变量

所以,而不是这个:

npm run build:prod

我需要这个:

npm run build:prod --URL https://myprodurl.com

最佳答案

如何在命令行中定义环境变量,例如:

URL=https://myprodurl.com npm run build:prod

我用一个简单的脚本对此进行了测试,并能够打印出 URL

"scripts": {
  "test": "./myTest.js"
},

我的测试.js:

#!/usr/local/bin/node

'use strict'

console.log(process.env.URL);
console.log('Done!');

然后:

$ URL=https://whatever.com npm run test

> my-test@1.0.0 test /Test/my-test
> ./myTest.js

https://whatever.com
Done!

编辑:如@RyanZim 所述,请参阅适用于 Windows 的以下内容:https://github.com/kentcdodds/cross-env
(免责声明:我不使用 Windows,也从未尝试过这个库)

关于node.js - 将变量从 NPM 脚本传递到 Webpack,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40747107/

相关文章:

reactjs - 配置react webpack进行部署

webpack - dotenv-webpack 在 webpack.config.js 中使用环境变量

javascript - 如何使用动态生成的文件名数组在 Grunt 中运行任务?

node.js - NodeJS - 使用 "Sequest"检查 SFTP 远程文件是否存在

javascript - 将 node.js 文件观察器与 JetBrains WebStorm 结合使用

javascript - 在 webpack AngularJS 项目中访问环境变量

javascript - 在匹配整个函数时捕获函数名称

node.js - Mongoose 对象 ID 为空

npm - 解决 'npm WARN saveError ENOENT: no such file or directory, open '/Users/<username>/package.json'' 错误

node.js - npm 链接不关心 package.json 或 .npmignore 中的 "files"