我最近一直在研究按需构建服务器。构建服务器是一个 NodeJS/Express REST API,它本质上包装了 Angular CLI 和相关构建工具,用于完成定制的按需 Angular 应用程序。
一切都按预期端到端工作,但我希望能够通过状态报告获得更精细的信息,因为在考虑流程的 2 个非常大的部分时,Angular 构建可能非常耗时
该过程运行时间最长的两个部分:
npm install
(通常通过默认@angular/原理图集合中的NG-New 原理图自动启动(- 实际的
ng build
命令。
2很容易解决,因为我直接通过child_process.spawn()
生成该过程(ng build --prod
(。
事实证明,1 有点复杂,因为长时间运行的npm install
过程实际上是在默认的 Angular ng-new 原理图/命令内部启动的。所以,如果我的想法是正确的,这本质上是一个显式生成的子进程(我的生成ng new
(,它是内部生成npm install
。
我想出的一个解决方法是将--skip-install
参数传递给ng new
,这将防止内部npm install
过程被原理图启动。 通过这样做,我可以通过child_process.spawn()
手动启动npm install
,并直接观察标准输出和标准输出流。
我很好奇是否有人知道一种方法可以从我明确生成的ng new
命令中启动的"npm 安装"中监视 stderr 和 stdout 流?
谢谢!
如果你在Linux上运行,你可以使用strace
来监视另一个进程的输出。
strace -p7835 -e trace= -e write=3
有关更多详细信息,请参阅此答案。
当然,您可以使用spawn
从节点调用strace
。要查找npm
进程的pid
(顺便说一句,这实际上是一个node
进程(,您需要使用ps
命令获取进程树。已经有一个节点模块可以做到这一点:ps-tree,它似乎也是跨平台的。
有关 Windows 上strace
的替代方案,请查看此讨论。我会选择Sysinternals的进程监视器。