简体   繁体   English

运行时Angular 2 Webpack环境配置

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM