在我的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
,有没有办法在此进行分隔?
答案 0 :(得分:1)
对于development
和production
环境,您应该具有不同的环境文件,您可以在其中定义moduleA。因此,假设它们分别为environment.ts
和environment.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
]
})
希望获得帮助