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