Monorepo环境下transloco.config.js是否支持不同库构建的多应用?
Monorepo下Transloco多应用配置方案
首先明确结论:Monorepo环境下Transloco完全支持多应用独立配置,你遇到的Scoped Library Extractor默认仅读取单份配置的问题,可以通过以下两种方案解决,优先推荐第一种拆分配置的方式:
方案1:拆分独立配置文件,运行时指定路径
你可以将两份应用配置拆分为独立的文件存放于项目根目录,避免共用配置的冲突:
- app 应用对应配置文件命名为
transloco.app.config.js
module.exports = { rootTranslationsPath: './src/app/assets/i18n/', langs: ['en', 'es'], scopedLibs: ['./projects/core/'] };
- app2 应用对应配置文件命名为
transloco.app2.config.js
module.exports = { rootTranslationsPath: './src/app2/assets/i18n/', langs: ['en', 'es'], scopedLibs: ['./projects/core2/'] };
之后在 package.json 中为两个应用分别配置翻译提取脚本,通过 --config 参数指定对应配置文件路径即可:
{ "scripts": { "transloco:extract:app": "transloco-extract --config transloco.app.config.js", "transloco:extract:app2": "transloco-extract --config transloco.app2.config.js" } }
执行对应脚本即可将对应依赖库的翻译内容提取到对应应用的i18n目录下,互相完全独立无干扰。
方案2:动态配置(适合配置差异小的场景)
如果两个应用的翻译配置重合度很高,不想维护多份文件,也可以通过环境变量动态判断当前构建目标,输出对应配置:
const targetApp = process.env.TRANSLOCO_TARGET_APP; const configMap = { app: { rootTranslationsPath: './src/app/assets/i18n/', langs: ['en', 'es'], scopedLibs: ['./projects/core/'] }, app2: { rootTranslationsPath: './src/app2/assets/i18n/', langs: ['en', 'es'], scopedLibs: ['./projects/core2/'] } }; module.exports = configMap[targetApp];
配套脚本如下,Windows环境需要提前安装cross-env包处理环境变量兼容性:
{ "scripts": { "transloco:extract:app": "cross-env TRANSLOCO_TARGET_APP=app transloco-extract", "transloco:extract:app2": "cross-env TRANSLOCO_TARGET_APP=app2 transloco-extract" } }
运行时加载注意事项
两个应用在各自的根模块导入TranslocoRootModule时,要注意指定各自的翻译资源加载路径,确保运行时加载的是当前应用对应的翻译文件,包含从依赖库提取的范围翻译内容。
内容的提问来源于stack exchange,提问作者TJ-
相关产品推荐
相关产品推荐

