最简路径是直接用 tasks.json 跑部署命令,但需显式调用 npx、补全 env、指定 shell 可执行路径、设置 group、谨慎使用 --delete、排除非构建产物、校验文件位置与 JSON 结构,并建议将脚本解耦为独立 deploy.sh。

vscode tasks.json 配置部署任务最简路径
直接用 tasks.json 跑部署命令是最快方式,但别写 npm run deploy 就完事——VS Code 不继承 shell 的 PATH 和环境变量,90% 的失败都卡在这儿。
- 显式调用
npx或项目内二进制:比如"command": "npx --no-install rsync -avz dist/ user@host:/var/www" - 手动补全
env字段,尤其NODE_ENV和敏感配置(.env文件内容不会自动加载) -
shell字段必须指定可执行路径:"shell": { "executable": "/bin/bash", "args": ["-c"] },Mac 用户别默认用 zsh 就省略这步 - 任务必须带
"group": "build"或"group": "deploy",否则在Tasks: Run Task里根本看不到
rsync 同步时 --delete 的真实风险
--delete 不是“删远程多余文件”这么轻描淡写——它会无差别删除目标目录中所有不在本地 dist/ 里的内容。曾经有团队误同步空 dist 目录,直接清空生产服务器上的上传附件目录。
用于端到端视频本地化流程的轻量编排器,路由至四个专注子技能——/wjs-transcribing-audio、/wjs-translating-subtitles...
- 上线前先加
--dry-run模拟一次:rsync -avz --delete --dry-run dist/ user@host:/path - 务必排除非构建产物:
--exclude='.git' --exclude='node_modules' --exclude='.env' --exclude='config.php' - Windows 用户注意:
rsync原生不可用,WSL 下可用;原生 Windows 推荐改用scp或robocopy(但后者路径分隔符和权限处理极不一致)
为什么保存后部署没触发?三个硬性检查点
不是逻辑错,而是 VS Code 对文件位置、字段名、JSON 结构极其严格,错一个就静默失效。
-
tasks.json必须放在项目根目录的.vscode/文件夹下,文件名不能是task.json、tasks.json.bak或带空格 -
"version"值必须是字符串"2.0.0"(不是2.0.0数字,也不是"2") - 每个任务至少要有
label、type、command三个字段,缺一不可;presentation里加"echo": true才能在终端看到执行命令
部署脚本该不该写进 tasks.json?
短期调试可以,长期维护建议解耦——把 rsync 或 scp 命令抽成独立 deploy.sh,再让 tasks.json 只负责调用它。这样既能复用到 CI 流程,也方便加日志、重试、备份等逻辑。
- 脚本里加
set -e让任意命令失败就中断,避免构建失败还强行同步 - 用
ssh-keyscan预埋主机指纹,防止首次连接卡住(ssh-keyscan host >> ~/.ssh/known_hosts) - 别在脚本里写死密码,用 SSH agent 或 GitHub Secrets 管理密钥,
tasks.json本身不适合存敏感信息
node_modules/.bin/rsync 的版本、SSH 密钥加载状态、甚至终端编码(某些中文路径在 rsync 中会乱码),都会让同一份 tasks.json 在不同机器上表现不同。先跑通单机流程,再谈自动化。

















