我建立了一个Angular 6库,其中包含具有几个公共功能的服务。
从库的“应用程序”调用此库和服务后,即使使用--prod构建的应用程序也启用了“ aot”功能,该库和服务也可以正常工作。
在一个单独的新创建的NG项目中,该库作为npm包导入(该库包始终使用--prod标志构建),并且一切正常除非使用--prod标志构建项目。我假设这与“自动”功能有关。
在新项目中,具有相同的服务实例(通过DI注入),其中一个函数可以像正常情况一样被调用,并且一个非常相似的函数被修剪并且不存在要被调用。如果我在未指定--prod
的情况下重新编译同一项目,则两个函数都存在并且可以正常调用。
我的问题是-我有什么可以解决或寻找的原因以弄清楚为什么会发生这种情况并最终采取补救措施?
-
作为参考,我正在使用以下命令构建库.tgz:
ng build --prod my-library
cd dist/my-library && npm pack
答案 0 :(得分:0)
结果证明Angular的构建优化器正在缓存作为我的库的node_module。即使我在每次“发布”到.tgz文件之前都更新了次要的构建版本,这种情况仍在发生。
在删除我的库的缓存文件并重建Angular项目之后,一切正常。
也许版本号的重大升级(而不是次版本号的升级)会破坏此缓存-我尚未进行测试。
构建优化器缓存位于此处:
\node_modules\@angular-devkit\build-optimizer\src\.cache