首页 > 解决方案 > 为什么在使用 --prod 编译时会从我的 Angular 库的服务中删除一个函数?

问题描述

我已经构建了一个 Angular 6 库,其中包含一个具有多个公共功能的服务。

当从库的“App”调用时,即使应用程序是使用启用“aot”的 --prod 构建的,该库和服务也可以正常工作。

在一个单独的、新创建的 NG 项目中,库作为 npm 包导入(库包始终使用 --prod 标志构建),除非使用 --prod 标志构建新项目,否则一切正常。我假设这与“aot”功能有关。

在新项目中,使用相同的服务实例(通过 DI 注入),其中一个函数可以正常调用,而一个非常相似的函数被修剪并且不存在可调用。如果我在不指定的情况下重新编译同一个项目--prod,这两个函数都存在并且可以正常调用。

我的问题是——我可以解决什么问题或寻找什么来弄清楚为什么会发生这种情况,并最终进行补救?

--

作为参考,我正在使用以下命令构建库 .tgz:

ng build --prod my-library cd dist/my-library && npm pack

标签: angularangular-cli

解决方案


原来 Angular 的构建优化器正在缓存我的库 node_module。即使我在每次“发布”到 .tgz 文件之前更新了次要构建版本,这种情况也发生了。

删除我的库的缓存文件并重建 Angular 项目后,一切正常。

也许版本号的主要升级(而不是升级次要号码)会破坏这个缓存 - 我还没有测试过。

构建优化器缓存位于此处: \node_modules\@angular-devkit\build-optimizer\src\.cache


推荐阅读