Node

debug

在shell中进行输出需要做到一下区分及注意,结合 debug 库的使用。
关于 debug 库的使用总结:
image.png

区分输出信息的展示对象

有一些信息是必须展示给使用者的,这类信息属于 必要信息/使用中信息,输出方式为直接使用 console.log / console.err 进行输出。
有一些信息是需要停留在 debug 层的,这类信息属于 开发中信息,输出方式为使用 debug 包。

区分 debug 信息的必要性

debug 信息中最重要的信息为 流程/阶段,以及 结果/错误 信息,这类信息需要独立并简要地表达出来,如当前正在执行哪一项任务,处于这项任务的某一阶段,最后跟一个描述:
image.png
为了方便开发中开启这类信息,应将其始终采用 库名debug(或根debug)的信息流来展示,这样可以通过类似 "DEBUG": "cheffe" 快速开启查看,且不引入额外信息。其次为了简要展示 任务 阶段 信息,采用 [xxx] 这样的前缀 label 进行信息装饰,可以在开发中快速获取信息流。

除了这类重要信息外,其他信息为流程中普通输出,或细节展示类信息,可以通过 debug 提供的 extends,做细节层级的深入:
image.png
这样外部也能通过 DEBUG 变量来适度开启,获取 "DEBUG": "cheffe,cheffe:*" 直接全部展示

cmd

windows 由于执行机制问题,需要不同的执行传参:

  1. const command = isWin ? 'cmd.exe' : 'yarn';
  2. const args = isWin ? ['/c', 'yarn', 'install'] : ['install'];
  3. const installCmd = spawn(command, args, {
  4. stdio: 'inherit',
  5. });

简单判断:

  1. export const isWin = type() === 'Windows_NT';