【发布时间】:2019-09-20 21:00:15
【问题描述】:
前几天我部署了我们前端的第一个版本,在设置所有内容时,我对构建过程感到非常困惑。 大多数 Angular 应用程序并不真正为使用工作区功能而烦恼,因为这样做的唯一原因是,如果您正在制作多个单独的应用程序,这些应用程序通过库共享代码,例如希望物理分离客户端 UI 和背面-office 用户界面。
到目前为止,我一直在关注一篇关于 Angular 库项目的写得很好的文章: https://blog.angularindepth.com/creating-a-library-in-angular-6-87799552e7e5
不幸的是,与大多数文章一样,除了与库项目本身有关的构建过程之外,构建过程非常模糊。我确实使用以下命令管理并运行了所有内容(我在 package.json 的脚本部分创建了一个脚本):
ng build my-lib-project-name && ng build && ng build my-ui-project-name --output-hashing=all --configuration=demo
然后我只是将 dist/my-ui-project-name 的内容复制到服务器并完成(实际构建过程也在云服务器上)。
我觉得奇怪的是,在我构建导入我的库的主项目之前必须进行第二次 ng 构建,否则我的主项目构建将无法找到我的库项目。 这当然不是 ng serve 所必需的,只有构建 lib 才能正常工作。
我的 --prod 标志也有问题,因为显然我的组件之一无法找到:
ERROR in : Cannot determine the module for class SideNavMenuItemComponent in <my_path_to_project>/projects/my-lib-project-name/src/lib/layout/sidebar/side-nav-menu/side-nav-menu-item.component.ts! Add SideNavMenuItemComponent to the NgModule to fix it.
这当然只发生在 --prod 构建期间,并且在没有标志或在 ng serve 的情况下工作得很好,因为我显然已经将它包含在 NgModule 中。
这让我认为我的构建过程可能不是最好的。是否有人为他们的多项目 Angular 应用程序设置了构建过程?以多种环境管理为重中之重?
我只在主 package.json 中添加了一些脚本,并且我的 angular.json 中有默认的构建配置。此外,我们目前仍在使用 Angular 7,我们将在不久的将来迁移到 8。
【问题讨论】:
-
我也有同样的问题
-
@Fasco 想通了
标签: angular typescript build configuration