如何根据环境变量在 compilerOptions 下设置不同的路径
How to set different paths under compilerOptions, depending on env variable
在我的 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';
将根据环境指向本地库或外部 npm 包。由于@moduleA
路径在compilerOptions
下的tsconfig.json文件中设置为paths
,有没有办法在那里进行这种分离?
您应该为 development
和 production
环境设置不同的环境文件,您可以从那里定义模块 A。所以假设它们是 environment.ts
和 environment.prod.ts
(对于产品)
在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
]
})
希望对您有所帮助
在我的 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';
将根据环境指向本地库或外部 npm 包。由于@moduleA
路径在compilerOptions
下的tsconfig.json文件中设置为paths
,有没有办法在那里进行这种分离?
您应该为 development
和 production
环境设置不同的环境文件,您可以从那里定义模块 A。所以假设它们是 environment.ts
和 environment.prod.ts
(对于产品)
在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
]
})
希望对您有所帮助