如何在Angular中设置构建过程中打包文件的顺序



我有一个需要支持本地化的Angular项目。为此,我们在加载模块之前先从json文件加载翻译。在main.ts中,我添加了以下行:

loadTranslationsFromJson(extractUserLocale(), 'assets/i18n').then(m => {
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch(err => console.error(err));
});

除了在类之外的服务中声明的一些常量变量之外,所有的都在工作。例如:

const commonPhrase = $localize`Enter your birthday`;
@Injectable()
export class OnboardingService {
// any variables declared here with $localize work fine
}

正如我在上面的例子中所理解的,由于const commonPhrase在浏览器中的Javascript加载/编译时加载,它不是Angular模块的一部分,因此它是在调用bootstrapModule(AppModule)之前创建的。因此,变量commonPhrase将不会被翻译。

它告诉我,如果我能确保在部署的包(这是一个大型JS文件(中首先注入我的main.ts文件(因此将首先由浏览器执行(,我就可以解决这个问题。在构建过程中,是否有方法指定将文件添加到捆绑包中的顺序?或者如何将main.ts放置为捆绑包中的第一个?

找到了答案。这不是ht ebuild中模块/文件的顺序,而是它们激活/导入的顺序。如果你看一下main.js,它是你的主应用程序模块的捆绑包,你会在那里看到所有模块/service/componets等作为hashmap。订单并不重要,但我发现重要的是先导入什么模块。我为引导本地化创建了单独的模块,并将其添加为AppModule的顶部导入。做到了。

最新更新