如何根据ENV变量在编译下设置不同的路径



在我的Angular应用程序中,我需要根据应用程序正在运行的环境(dev/prod)有条件加载模块。在开发环境中,它应该指向我本地项目的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';

将根据环境指出本地LIB或外部NPM软件包。由于@moduleA路径在compilerOptions下的Tsconfig.json文件中设置为paths,是否可以在此处进行此分隔?

您应该为developmentproduction环境具有不同的环境文件,从那里您可以定义模块。因此,假设它们是environment.tsenvironment.prod.ts(用于产品)

environment.ts中,您是add

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
  ]
})

希望此帮助

相关内容

  • 没有找到相关文章

最新更新