ros2-quick-runner插件v0.0.4版本发布

🎯 本次改动的核心目标

让 colcon build 也能像 launch/run 一样右键一键搞定。


✨ 新增功能:colcon build 右键菜单

改了什么

在任意文件夹上右键,新增了 colcon build 按钮。

期望的行为

右键位置 终端路径 执行的命令
xxx_ws/ xxx_ws/ colcon build
xxx_ws/src/ xxx_ws/ colcon build
xxx_ws/src/pkg_a/ xxx_ws/ colcon build

但是如果是在工作空间的上级目录右键,虽然也会出现 colcon build 按钮,但是运行后右下角会报错找不到工作空间。

简单说:一般来说,你只需要在你工作空间下面的文件夹右键运行,最终都在工作空间根目录执行编译。


🐛 更新内容

增强 findRos2Workspace 函数

之前只判断同时有 src/ 和 install/,现在分两级判断:

javascript 复制代码
// 优先:同时有 src/ 和 install/(已编译,最准确)
if (fs.existsSync(srcPath) && fs.existsSync(installPath)) {
    return currentDir;
}

// 兜底:只有 src/,但 src/ 下有包含 package.xml 的子目录(未编译)
if (fs.existsSync(srcPath)) {
    const items = fs.readdirSync(srcPath);
    const hasPackage = items.some(item => {
        const itemPath = path.join(srcPath, item);
        return fs.statSync(itemPath).isDirectory() &&
            fs.existsSync(path.join(itemPath, 'package.xml'));
    });
    if (hasPackage) return currentDir;
}

这样未编译的工作空间也能正确识别。

增加 isWorkspaceRoot 严格判断

javascript 复制代码
function isWorkspaceRoot(dirPath) {
    const srcPath = path.join(dirPath, 'src');
    if (!fs.existsSync(srcPath)) return false;
    
    const items = fs.readdirSync(srcPath);
    return items.some(item => {
        const itemPath = path.join(srcPath, item);
        return fs.statSync(itemPath).isDirectory() &&
            fs.existsSync(path.join(itemPath, 'package.xml'));
    });
}

不能只看有没有 src/,必须看 src/ 下的子目录是否包含 package.xml!

这避免了被包内的 src/ 子目录误判。比如xxx_ws/src/pkg_a/src,修复前在pkg_a目录右键,就会在pkg_a这个目录进行colcon build,但是修复后会在xxx_ws目录进行colcon build。


📝 经验总结

  1. 此次更新最主要的功能就是添加colcon build功能,具体原因可以和ros2的编译结果有关,正是由于ros2的特性(详细原因可以看我上期文章),修改代码后需要重新编译,那么colcon build就变成了和source install/setup.bash使用频率差不多的命令,如果自己手敲,会比较费时间(我自己在复现项目的过程中体会到了,当你每改一点,然后git存档,然后你要看看能否跑起来,你就需要编译,然后运行,手敲确实繁琐)
  2. 这次更新比较突然,我也只是做了一些测试,但是由于每个人的项目不同,代码架构可能存在不同,因此我目前也排查不出问题,只能尽可能的模拟多种情况。(欢迎大家体验,提出问题,目前已经有73人下载安装)

🎁 最终效果

场景 行为
右键 xxx_ws/ ✅ 直接 build
右键 xxx_ws/src/ ✅ 上一级 build
右键 xxx_ws/src/pkg_a/ ✅ 自动向上找,build
工作空间未编译 ✅ 也能正确识别
包内 src/ 子目录 ✅ 不会被误判

GitHub:

https://github.com/Knighthood2001/vscode-ros2-quick-runner

版本 :v0.0.4

发布日期:2026-06-10

相关推荐
m0_5873830041 分钟前
广州 24 小时自助健身房解决方案技术实现与实战指南
java·spring·小程序·架构·需求分析
·云扬·1 小时前
Prompt 工程与安全:从 System 设计到注入防御
java·人工智能·安全·ai·prompt
专注仿真1 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
Best-Wishes1 小时前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
代码不停2 小时前
自动化测试(java)
java·开发语言·selenium·自动化
鬼手点金4 小时前
opencode-rules 插件
java·开发语言·前端·人工智能·chrome·git·github
爱上网的小舟4 小时前
星际战士2启动错误怎么办?5种游戏报错解决方法
开发语言·php
paopaokaka_luck5 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
阿里嘎多学长5 小时前
2026-10-12 GitHub 热点项目精选
开发语言·程序员·github·代码托管
Wang's Blog5 小时前
Java 项目实战: 交友项目 - Dubbo 的内部结构与一次调用的完整链路
java·dubbo