智享百科屋
霓虹主题四 · 更硬核的阅读氛围

修改ts文件自动重新编译的实用配置方法

发布时间:2026-01-18 14:50:54 阅读:186 次

在开发虚拟机中的 TypeScript 项目时,频繁保存代码后手动重启编译器是个麻烦事。比如你在 VMware 或 VirtualBox 里搭了个 Linux 虚拟机跑 Node.js 服务,每次改完 .ts 文件还得登录终端敲命令,效率很低。

使用 ts-node 和 nodemon 实现热重载

最简单的办法是结合 ts-nodenodemon。这两个工具搭配起来,能监听文件变化并自动重启服务。

先在项目中安装依赖:

npm install --save-dev ts-node typescript nodemon

然后在项目根目录创建一个 nodemon.json 配置文件:

{
  "watch": ["src"],
  "ext": "ts,js",
  "ignore": ["src/**/*.spec.ts"],
  "exec": "ts-node src/index.ts"
}

这样只要 src 目录下的任何 .ts 文件被保存,nodemon 就会触发重新执行 ts-node src/index.ts,实现即时反馈。

配合 VS Code 远程开发更顺手

如果你用的是 VS Code 的 Remote-SSH 插件连接虚拟机,保存本地代码的同时就会同步到远程,触发监听。这就跟在本机开发一样流畅,改完一行代码,几秒内就能看到服务输出的变化。

也可以把启动命令写进 package.json

{
  "scripts": {
    "dev": "nodemon"
  }
}

以后只需要运行 npm run dev,整个流程就全自动了。

注意文件系统事件穿透问题

有些虚拟机共享文件夹(如 VBox 共享目录或 VMware Tools 映射)可能不会正常触发 inotify 事件,导致 nodemon 监听不到变化。这时候可以启用轮询模式:

{
  "watch": ["src"],
  "ext": "ts,js",
  "exec": "ts-node src/index.ts",
  "delay": "2000"
}

或者在启动命令后加 --legacy-watch 参数:

nodemon --legacy-watch

虽然多花点 CPU,但能确保文件变更不被遗漏。

这套方案在 Ubuntu、CentOS 等常见 Linux 虚拟机环境中都验证过,适合中小型项目快速调试。