如何创建一个npm包,使其能够使用导入到的任何项目的环境文件中的baseUrl



我的公司已经启动了一个私有的npm包存储库。我正试图将一些经常重复使用的代码放入包中,然后从服务器安装并导入到项目中。对于我们所有的项目,我们都使用环境文件,这些文件的值是项目使用的任何api的基本url。通常,我们会将环境文件导入到服务中,并使用基本url值来执行对api的调用。使用打包服务,我们无法以同样的方式做到这一点。

现在我正在开发一个登录/授权包。到目前为止,我能想到的最好的办法是:

  1. 将环境文件导入登录页面的父组件
  2. 然后使用@Input((将baseUrl值从环境文件传递到登录屏幕组件(包内(
  3. 然后让该组件将baseUrl传递给对服务的调用(在包内(

虽然很乱,但还可以。问题来了,我们也有拦截器来调用服务中的函数,我觉得我提出的任何解决方案都非常棘手,我觉得一定有更好的方法。

如有建议,不胜感激。

我们也遇到了类似的问题。诀窍是通过向库声明模块来注入配置。例如,在库中,需要注入配置的模块定义如下:

export class TestModule {
static forRoot(moduleConfig: any): ModuleWithProviders {
return {
...
providers: [
{ provide: 'testModuleConfig', useValue: moduleConfig }
]
};
}

在库的服务中,要获得配置:

constructor(
@Inject('testModuleConfig') private ModuleConfig: any
) 

要在使用库的应用程序中使用它,您可以在forRoot:中传递配置

imports: [
TestModule.forRoot(environment.appconfig),
],

希望这能有所帮助。

最新更新