如何根据环境变量

时间:2019-02-13 10:00:38

标签: typescript environment-variables tsconfig

在我的angular应用程序中,我需要根据应用程序运行的环境(开发/生产)有条件地加载模块。在开发环境中,它应该指向本地项目的libs文件夹,对于生产环境,它应该指向node_modules文件夹中的外部软件包。

我已经尝试如下使用三元运算符:

import { ModuleA as ModuleAExternal } from '@external/moduleA';
import { ModuleA } from '@moduleA';

@NgModule({
  declarations: [],
  imports: [
    ...
    environment.production ?   ModuleAExternal : ModuleA
  ]
})

这是可行的,但是在构建项目时,我不想被迫导入本地和外部软件包。

所以我希望同样的

import { ModuleA } from '@moduleA';

将根据环境指向本地库或外部npm软件包。由于在@moduleA下的tsconfig.json文件中将compilerOptions路径设置为paths,有没有办法在此进行分隔?

1 个答案:

答案 0 :(得分:1)

对于developmentproduction环境,您应该具有不同的环境文件,您可以在其中定义moduleA。因此,假设它们分别为environment.tsenvironment.prod.ts(对于prod)

environment.ts中,您会添加

import { ModuleA } from '@moduleA';

export const environment = {
  ...
  ModuleA: ModuleA,
  ...

environment.prod.ts

import { ModuleA } from '@external/moduleA';

export const environment = {
  ...
  ModuleA: ModuleA,
  ...

因此您可以将它们写为

@NgModule({
  declarations: [],
  imports: [
    ...
    environment.ModuleA
  ]
})

希望获得帮助