angular - 为什么在使用 --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
解决方案
原来 Angular 的构建优化器正在缓存我的库 node_module。即使我在每次“发布”到 .tgz 文件之前更新了次要构建版本,这种情况也发生了。
删除我的库的缓存文件并重建 Angular 项目后,一切正常。
也许版本号的主要升级(而不是升级次要号码)会破坏这个缓存 - 我还没有测试过。
构建优化器缓存位于此处:
\node_modules\@angular-devkit\build-optimizer\src\.cache
推荐阅读
- security - 如何将扫描的 IP 地址转移到蜜罐?
- javascript - 以 PDF 格式从数据库加载缓冲区数据
- c# - 学习建立网站的课程 - 无法理解代码块
- python-3.x - 如何使用 Python 从 Google Cloud Function 上的 POST 请求中接收图像?
- java - Glassfish 5.1 服务器在 enable-secure-admin 后未启动 (NoClassDefFoundError: sun/security/ssl/HelloExtension)
- c++ - 如何在c ++中找到因子编号的位置
- python - 获取 HTTP 服务器的服务器头
- javascript - 如何在 map 函数中使用 useEffect?
- php - PHP,在具有相同名称的 HTML 标签之间提取数据
- java - AWS Aurora Serverless Spring Boot 通信链路错误