在我的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
,是否可以在此处进行此分隔?
您应该为development
和production
环境具有不同的环境文件,从那里您可以定义模块。因此,假设它们是environment.ts
和environment.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
]
})
希望此帮助