[英]Angular 2 Webpack environment configuration at runtime
I'm using Webpack to build my Angular project. 我正在使用Webpack构建我的Angular项目。
I have an env.js
file that looks like: 我有一个
env.js
文件,看起来像:
module.exports.ENV = {
API_URL: "http://localhost:5001/",
...
};
And in my webpack.common.js
, I have: 在我的
webpack.common.js
,我有:
const API_URL = require('./env').ENV.API_URL;
const METADATA = {
API_URL: API_URL,
title: "Angular Project",
...
};
This is nice because I am able to configure my environment variables in a single env.js
file. 很好,因为我可以在单个
env.js
文件中配置环境变量。 However, this configuration is in the build process. 但是,此配置在构建过程中。 This is bad because I cannot just build once and run in every environment (given the environment has a
env.js
), instead, for each environment, I have to build a new instance of the project - which I don't think is the best practice. 这很糟糕,因为我不能只构建一次就可以在每个环境中运行(假设环境具有
env.js
),相反,对于每个环境,我都必须构建一个新的项目实例-我认为这不是最佳实践。
So my question is: is there any way I can configure my environment variables at runtime with Angular 2 and Webpack? 所以我的问题是:有什么方法可以在运行时使用Angular 2和Webpack配置我的环境变量?
Webpack recommends using process.env.NODE_ENV: Webpack建议使用process.env.NODE_ENV:
https://webpack.js.org/guides/environment-variables/ https://webpack.js.org/guides/environment-variables/
I've used this in many places: 我在很多地方都使用过:
const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
There is another library package cross-env
that you can call on command-line to set the environment variable, and execute a process at the same time. 您可以在命令行上调用另一个环境
cross-env
打包的库包来设置环境变量,并同时执行一个过程。
You could also define your environment variables from your webpack plugins (via the DefinePlugin): 您还可以通过webpack插件定义环境变量(通过DefinePlugin):
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development')
}),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.