4

我正在开发一个 Angular 库并具有典型的设置,我有我的库项目,然后是另一个项目,我正在使用构建的库输出。

我希望能够监视库源文件并自动重建我的库。我还希望我的消费应用程序在检测到我的库已重建时重建。

在我的应用程序检测库更改的情况下,我相信这已经设置好了,因为ng serve自动监视文件更改,并且在我的应用程序的 tsconfig 中,我的库的路径映射到dist构建库输出的文件夹。如果我手动更改 dist 文件夹中的这些文件之一,我的消费应用程序的重建将被触发,因此该部分工作正常。

在监视库更改的情况下,我已经看到我可以指定我的库名称和监视标志作为构建命令的一部分,所以:

ng build my-lib --watch

我在 package.json 中定义了以下脚本:

"start": "npm run build && ng serve",
"build": "ng build && npm run bundle-styles",
"bundle-styles": "scss-bundle -c scss-bundle.config.json"

我假设我需要在一个单独的进程中生成我的库上的手表,所以我可能需要在我的任务中使用更多脚本来构建和观看我的库?

然后在另一个进程上运行构建脚本,该脚本将为我的消费应用程序提供服务。

我确实尝试过这个,但是我的bundle-styles任务遇到了一个问题,我需要在 angular cli 构建之后但在它开始观察变化之前执行。我开始认为我可能需要创建自己的自定义监视任务,例如gulp

在库中开发更改以查看它们在消费应用程序中被检测和重建时,这里的正确方法是什么?

谢谢

4

1 回答 1

-1

对于简单的应用程序,您现有的设置是正确的。当我的应用程序加载时,我产生了两个进程,一个使用 --watch 构建一个库,一个为我的主应用程序提供服务。但是如果你开始做一些复杂的事情,比如你的 bundle-styles 任务,或者ng serve当你添加一个库组件然后在延迟加载的模块中引用它时发现中断(这发生在我的项目中),你应该咬紧牙关写一个自定义脚本。就我而言,我需要从中获取输出ng build lib-name --watch,如果我读到存在编译错误,我可以首先重新启动构建过程,如果仍然存在编译错误,请通知自己该错误。同样,当库更改时,我经常需要重新服务主应用程序,所以当库重建不再有任何错误时,我会重新启动我的ng serve过程。

我知道这并不理想,但ng如果你想做一些 Angular 团队没有自己开发的事情,现有的选项就不会削减它。

于 2019-10-03T15:37:16.027 回答