CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Node.js 运行时进阶/课时/CLI 工具链
RawBlame
课时目录12 节

Node.js 运行时进阶

  1. 01运行时进阶概览
  2. 02定时器与 nextTick
  3. 03回调与错误栈
  4. 04子进程
  5. 05Worker Threads
  6. 06Cluster 与多进程
  7. 07垃圾回收
  8. 08调试 Node
  9. 09APM 与生产监控
  10. 10CLI 工具链
  11. 11global 与内置模块
  12. 12综合练习

CLI 工具链

commander、chalk、nodemon、watch。

25 分钟

CLI 工具链

nodejs-advanced-essentials 的 nva-cli 讲 argv 与 stdin;本课从 运行时与 DX 角度补 commander、chalk、nodemon、watch——写可维护脚本、开发时快速迭代。

学习目标

  • 用 commander 组织子命令与 option
  • 用 chalk 区分 stderr 语义色(不滥用)
  • 配置 nodemon 或 Node --watch 做热重载

commander 子命令

import { Command } from "commander";
import chalk from "chalk";

const program = new Command();

program
  .name("nrt-demo")
  .description("runtime essentials CLI demo")
  .version("1.0.0");

program
  .command("hash")
  .argument("<text>", "input string")
  .option("-a, --algo <name>", "hash algorithm", "sha256")
  .action((text, opts) => {
    console.log(JSON.stringify({ algo: opts.algo, text }));
  });

program.parse();

复杂脚本拆 command 模块;与 nva-practice 的 import CLI 可共用同一套结构。

chalk 与输出约定

console.error(chalk.yellow("warn:"), "deprecated flag");
console.error(chalk.red("error:"), err.message);
console.log(chalk.green("done")); // stdout:可被管道消费

原则:结构化数据走 stdout 纯 JSON;人类可读进度走 stderr + chalk。CI 无 TTY 时 chalk 自动降级——勿依赖颜色解析输出。

nodemon 与 Node --watch

nodemon(路线图 nodemon):监听文件变更重启进程。

{
  "watch": ["src"],
  "ext": "js,json",
  "exec": "node src/cli.js"
}

Node 20+ 内置:

node --watch src/cli.js

nrt-debug 调试时 nodemon 可能断掉 inspect 会话——可用 nodemon --inspect 或 VS Code compound launch。

环境变量与 dotenv

CLI 常读 process.env(node-runtime)。本地开发 dotenv/config 预加载;生产用 K8s Secret / 平台注入,不要把 .env 提交仓库。

与 npm scripts 集成

{
  "scripts": {
    "dev": "node --watch bin/cli.js",
    "start": "node bin/cli.js"
  },
  "bin": { "nrt-demo": "./bin/cli.js" }
}

发包细节见 nva-packages。

练习

  • 用 commander 实现 greet <name> --shout
  • stderr 打黄色 warning,stdout 只输出一行 JSON
  • 用 --watch 或 nodemon 改代码验证自动重启

小结

commander 管结构,chalk 管可读性,watch 管迭代速度。 下一课 global 与常用内置模块地图。

加载本节练习…
← 上一课APM 与生产监控下一课 →global 与内置模块