Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>命令管理者 - Commands ManagerNew to Visual Studio Code? Get it now.
命令管理者 - Commands Manager

命令管理者 - Commands Manager

HanMaXiao

| (0) | Free
一键启动项目开发命令,支持包管理器自动识别和批量启动
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Command Launcher

一键启动项目开发命令,支持包管理器自动识别、批量启动、全局/项目作用域分离和拖拽排序。

功能特性

  • 命令管理 — 在侧边栏树形面板中集中管理所有 Shell 命令(npm scripts、dev server、构建脚本等),支持添加、编辑、删除、分组。
  • 全局/项目作用域分离 — 命令分为「全局命令」(所有工作区共享)和「项目命令」(仅当前工作区可用)两个作用域,数据分别持久化到 globalState 和 workspaceState,互不干扰。
  • 拖拽排序 — 支持原生拖拽操作:拖动命令在同组内重新排序、拖到其他分组、甚至拖到另一个作用域。整组也可以拖拽移动。
  • package.json 差异同步 — 一键扫描工作区 package.json 中的 scripts 字段,自动识别包管理器(npm / pnpm / yarn / bun),以「新增 / 已移除 / 未变更」三态对比已导入的命令:勾选导入新增项,已移除的脚本命令自动删除,不再重复导入同一批命令。
  • 批量启动 — 将多个单命令组合为批量配置,一键依次启动全部子命令;子命令全部停止后批量状态自动同步。
  • 搜索过滤 — 在面板标题栏输入关键词,按命令名称或内容实时过滤。
  • 状态栏集成 — 底部状态栏显示正在运行的命令数量,点击可弹出快速选择面板启动/停止命令。
  • 终端生命周期管理 — 命令运行时图标变为停止按钮,终端关闭后自动同步状态,批量命令的子命令全部退出后自动标记为已停止。
  • 终端自动关闭 — 一次跑完的命令(如 pnpm install)退出码为 0 时自动关闭终端;失败时保留终端并提示退出码,dev server 可按单条命令豁免。
  • 启动时状态对账 — IDE 退出 / 崩溃后残留的「运行中」状态在下次打开时自动打回「已停止」,点一次就能启动,不必先点一次「停止」;上一轮遗留的终端也会一并关掉,不会攒成孤儿终端。

安装

方式一:VS Code 市场

市场发布后可用,目前请通过 VSIX 安装。

在 VS Code 扩展面板中搜索 Command Launcher,点击安装即可。

方式二:VSIX 安装

  1. 从 GitHub Releases 下载最新 .vsix 文件。
  2. 在 VS Code 中打开扩展面板,点击右上角 ... 菜单 → 从 VSIX 安装,选择下载的文件。
  3. 或使用命令行:
code --install-extension command-launcher-0.2.0.vsix

使用方法

面板概览

安装后,活动栏会出现 Command Launcher 图标(播放按钮)。点击后在侧边栏展开树形面板:

▼ 全局命令          (globe 图标)
  ▼ 分组名称        (folder 图标)
    ▸ 命令名称      (play 图标,点击启动)
  ▼ 批量启动
    ▸ 批量配置名    (layers 图标,显示包含命令数)
▼ 项目命令          (project 图标)
  ▼ 脚本命令
    ▸ dev
    ▸ build

常用操作

操作 方法
启动命令 点击命令左侧的播放图标,或右键 → 启动命令
停止命令 运行中点击停止图标,或右键 → 停止命令
停止全部 命令面板搜索「停止所有命令」
添加命令 面板标题栏 + 按钮,或右键分组 → 添加命令
编辑命令 右键命令 → 编辑命令
删除命令 右键命令 → 删除命令
重新导入 package.json 面板标题栏 $(sync) 同步图标按钮,或「...」更多操作 → 重新导入 package.json
搜索命令 面板标题栏搜索图标,输入关键词过滤
拖拽排序 直接拖动命令到目标位置(同组重排 / 跨组移动 / 跨作用域移动)
上移 / 下移 右键命令 → 上移 / 下移
移至全局 / 项目 右键命令或分组 → 移至全局 / 移至项目
快速启动 点击底部状态栏 Launcher,在弹出列表中选择命令
添加批量配置 命令面板搜索「添加批量启动配置」,选择多个命令组合

重新导入 package.json(差异同步)

面板标题栏的 $(sync) 按钮,或「...」更多操作 → 重新导入 package.json,会把当前 package.json 的 scripts 与已导入的命令做一次差异对比,弹窗分三栏展示:

状态 含义 确认后
新增 package.json 里有、还没有导入过 默认勾选,勾选即导入到「脚本命令」分组
已移除 之前导入过、package.json 里已经没有 自动删除,不留在命令管理器
未变更 两边都有的脚本 保持不动

改个名也算「先删后加」:例如 dev 被改名为 opearion_dev,dev 进入「已移除」栏被自动删除,opearion_dev 进入「新增」栏等你勾选。关闭弹窗则不做任何增删。

两条自动删除的安全护栏:

  • 运行中的命令先停后删 — 正在运行的过期命令会先停止其终端再删除。
  • 被批量配置引用的命令跳过 — 被某个批量启动配置(batchCommands)引用的命令不会被删除,会在弹窗里注明「被批量配置引用,已跳过」,避免留下悬空 id。

⚠️ 只有从 package.json 导入的命令(记录了 sourceScript)才受这套自动清理管理。你自己在 Launcher 里添加的命令永远不会被自动删除。

老版本导入的命令没有该记录,首次同步时会按「脚本命令」分组 + 命令名自动回填一次;名字对不上的保持原样、同样不受清理管理。

导入的命令只记录 pnpm run dev 这样的调用形式,不存 script 的真实内容,所以你在 package.json 里改 "dev": "vite" 为 "dev": "vite --host" 无需重新导入——运行时用的是最新内容。

截图

截图将在市场发布前补充。

配置

配置项 类型 默认值 说明
commandLauncher.autoScanOnOpen boolean true 打开工作区时自动扫描 package.json。若发现 scripts 且当前项目尚无命令,会弹出提示询问是否导入。设为 false 可关闭自动扫描。
commandLauncher.autoCloseTerminal boolean true 命令正常结束(退出码为 0)时自动关闭它创建的终端,不用手动关。退出码非 0 时保留终端并弹出警告,方便查看报错。可在「编辑命令」里按单条命令覆盖。

在 VS Code 设置中搜索 commandLauncher 即可修改。

启动时状态对账

命令的运行状态会持久化到 globalState / workspaceState。但 IDE 退出、崩溃或断电时终端进程已经被杀,上一次写下的 status: "running" 却还留在存储里——下次打开 IDE,面板就是一排假的「运行中」。

更糟的是:菜单把 ^commandRunning 绑到了「停止」按钮上,所以第一次点击只能停、永远停不启,必须「停 → 再启」点两次。

扩展在激活时做一次对账,分两步:

  1. 关掉所有 [Launcher] … 开头的遗留终端。开着 terminal.integrated.enablePersistentSessions 时,VS Code 会把上一轮的终端恢复回来,但本扩展重启后已经不再跟踪它们——留着就是一堆没人管的孤儿 shell。
  2. 凡是标记为「运行中」的命令,一律打回「已停止」;批量父命令会跟着子命令一起推进。

不做「终端是否还活着」的判定:恢复回来的终端本来就不该保留,想开重新点一次命令即可。对账在树面板创建之前完成,因此第一帧就是正确状态,不会闪一下假「运行中」。

正常关闭 IDE 时(deactivate)也会按同样的前缀规则把终端关掉,让持久化没东西可恢复。但这一层只是第二道防线——崩溃 / 强杀 / 断电不会执行 deactivate(),真正兜底的是启动时的对账。

自动关闭终端

pnpm install、npm run build 这类一次跑完的命令结束后,终端会自动关闭。

  • 成功(退出码 0) → 自动关闭终端,命令状态变为「已停止」。
  • 失败(退出码非 0) → 保留终端,命令状态变为「错误」,并弹出警告提示退出码——报错信息在终端里,关掉等于让人重跑一遍。
  • dev server 这类常驻命令 → 右键 → 编辑命令,最后一步选择「始终保留终端」,或在设置里把 commandLauncher.autoCloseTerminal 关掉。

依赖 shell integration。 本功能基于 VS Code 的 shell integration 获取真实退出码,因此要求:

  1. VS Code 版本 ≥ 1.95;
  2. 终端 profile 使用受支持的 shell(PowerShell 需 pwsh 7+,bash / zsh / fish)。Windows PowerShell 5.1 不受支持;
  3. terminal.integrated.shellIntegration.enabled 未被关闭。

三者任一不满足时,命令照常运行,但拿不到结束事件,终端会一直保留(即本功能静默不生效)。 在终端里执行 Get-Command -Name "*VSC*" -CommandType Function,有输出才说明集成脚本注入成功。

快捷键

本扩展为高频操作绑定了默认快捷键,可在 VS Code 的 键盘快捷方式 设置(Ctrl+K Ctrl+S / macOS Cmd+K Cmd+S)中搜索 Command Launcher 查看和修改。

默认快捷键

快捷键 macOS 命令 说明
Ctrl+Shift+R Cmd+Shift+R commandLauncher.quickStart 打开快速启动面板
Ctrl+Shift+Q Cmd+Shift+Q commandLauncher.stopAll 停止所有运行中的命令
Ctrl+Shift+L Cmd+Shift+L commandLauncher.search 搜索命令

其他可绑定的命令 ID

命令 ID 说明
commandLauncher.scanPackageJson 重新导入 package.json(差异同步)
commandLauncher.refresh 刷新命令列表
commandLauncher.addCommand 添加命令
commandLauncher.addBatchCommand 添加批量启动配置

数据迁移

从旧版本(无 scope 字段)升级时,扩展会自动将旧数据迁移为全局命令(scope: "global"),并清除旧的存储键,无需手动干预。

开发

# 安装依赖
npm install

# 开发编译(含 sourcemap)
npm run compile

# 监听模式
npm run watch

# 生产构建
npm run package

# 打包 VSIX
npx vsce package

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft