正确配置 tasks.json 即可,无需修改 launch.json;tasks.json 必须置于项目根目录的 .vscode/ 下,type 必须设为 "shell",并配置 "echo": true、"panel": "dedicated"、"clear": true、"reveal": "always",.env 需通过 args 或 package.json 显式加载。

直接配 tasks.json 就行,别碰 launch.json —— 后者是给调试用的,一配就卡住、端口冲突、环境变量丢光。
tasks.json 必须放在 .vscode/ 目录下
VSCode 不会扫描子目录或项目外路径。放错位置(比如丢进 src/ 或漏掉 .vscode 这一层)会导致 Ctrl+Shift+P → Tasks: Run Task 列表为空。
- 正确路径:
.vscode/tasks.json(项目根目录下) - 推荐做法:右键项目根目录 → “Generate tasks.json from template” → 选
Others,再手动替换内容,避免手建路径出错 - Windows 用户注意:
command中路径分隔符统一用/或\,别混用;cmd下跑npm run dev容易卡死,优先用"type": "shell"
type 设为 shell 才能继承环境变量
"type": "process" 是隔离环境的,npm、npx、.env 全部失效;"type": "shell" 才会加载你终端里已有的 PATH 和 profile 配置。
使用约定式提交(Conventional Commits)生成标准化的 Git 提交信息。适用于以下场景: (1) 暂存更改时需要提交信息; (2) 审查 diff 时希望获得结构化摘要; (3) 编写 PR 描述或变更日志(changelog)条目; (4) 用户明确要求“为本次更改编写提交信息”。 该功能会分析已暂存/未暂存的 diff,并生成按类型(type)划分范围的提交信息。
- 必须写
"type": "shell",不是"process" - 如果要用
nodemon或ts-node-dev实现热重载,还得加"isBackground": true+"problemMatcher",否则 VSCode 认为任务“执行完就结束”,直接杀掉后台进程 - Windows 上若用 PowerShell,建议在
settings.json里设"terminal.integrated.defaultProfile.windows": "Command Prompt",避免执行策略拦截
presentation 配不全,日志就看不见
Node 服务启动后输出的 Listening on http://localhost:3000 之类信息,默认不会显示在任务面板——因为 VSCode 默认只捕获退出码,不转发 stdout。
- 必须加
"echo": true,否则连npm start是否执行了都不知道 -
"panel": "dedicated"避免和其他任务日志挤在一起;"clear": true每次运行前清空旧输出,防止误读残留 log -
"reveal": "always"确保面板自动弹出,不用手动点开
想加载 .env,不能靠 dotenv 自动生效
VSCode 任务默认不读 .env,require('dotenv').config() 在入口文件里也无效——因为任务启动时根本没加载它。
- 最简方式:在
args里显式注入,例如:["-r", "dotenv/config", "index.js", "dotenv_config_path=.env"] - 更稳做法:把加载逻辑写进
package.json的 script,比如"dev": "node -r dotenv/config index.js dotenv_config_path=.env",然后任务只调npm run dev - 别信“在终端里
source .env再启动任务”——任务是独立进程,不继承终端当前 shell 的 env 变量
端口冲突、环境变量失效、日志一闪而过——这些问题几乎都出在 presentation 缺字段、type 选错、或者 tasks.json 放错位置。配完务必在终端里先手动跑一遍 npm run dev,确认能起来,再让 VSCode 去托管它。

















