实测:OpenChamber 里点一下,make 就跑

2026-10-10 17:33:10    行业资讯   

OpenChamber Makefile 是一个 OpenChamber 扩展:侧栏多出一块 Makefile 面板,把当前项目的 target 全部列好,点一行,make 就在旁边跑起来,日志一屏一屏长出来。它开源(Apache-2.0),装在 OpenChamber 2.0.0 及以上的网页端与桌面端。

命令行里要敲的那行字,到这里就是能点的那个按钮。

Makefile 面板:6 个 target 列成手风琴,help 已展开并显示运行日志

先说句公道话:终端里敲 make build 确实比打开面板点一下快,省下的不是敲那几个字的时间。它省的是"这个项目到底有哪些目标、各自在干什么"的发现成本,说明写在列表里,顶部能搜,日志就长在你正在看的地方。项目里没有 Makefile,或者你早把命令背下来了,这块面板对你没什么用。

目标列全,还自带说明

面板按 make 自己的查找顺序读 GNUmakefile、makefile、Makefile,命中哪个用哪个,跟随你当前打开的项目目录。每个 target(目标)一行,说明来自两种写法:行内 ##,或者写在目标上方独立一行的 ##。

build: ## Build the installable package into dist/

.PHONY 和默认目标各挂一个徽章,右侧状态点告诉你跑过没有。截图是英文界面,中文下同一个位置是「完成」和「尚未运行」。顶部还有搜索框,按名字或说明过滤,Esc 清掉。

边界也说清楚:它只读命中的那一个文件,include 进来的目标、模式规则和点号目标不进列表,依赖关系也不展示,点下去仍按 make 原样执行。

五个折叠状态的 target,右侧显示 Not run yet

点一下,日志边跑边到

没跑过的 target,第一次点击就执行 make <target>;已经跑过的,先展示上次的日志,要重跑按 Run again。行本身只负责展开和收起。

输出(stdout 和 stderr)一块块追加进终端样式的日志:ANSI 颜色照常着色,回车重绘的进度行压成一行,不会再看到 [32m 这样的转义残渣。跑完之后状态、退出码、耗时写在同一行,状态标签跟着界面语言走,英文 Done、中文「完成」。中途想停就 Stop,服务先发 SIGTERM,赖着不退再补 SIGKILL;失败的运行标成 Failed,退出码照旧显示。

下面这张截图来自扩展自己的仓库,六个 target 就是它的 Makefile,help 跑完给的是 Done · exit 0 · 0.1s。

help 展开:退出码与耗时、日志块与 Run again / Copy / Clear

日志长在你正在看的地方,不用再在窗口之间来回切。

关掉标签页,构建照跑

面板是个 iframe,起不了进程,所以扩展带了一台跑在 127.0.0.1 的本地服务:它读 Makefile、解析目标、spawn 出 make,进程归它所有,标签页关掉,长构建照样跑完。

这台服务以你的账号权限运行、没有操作系统沙箱,审批弹窗里写得明明白白。扩展只申请 service 这一项能力,并声明 permissions.exec: ["make"],不读会话数据,也不碰 makefile 以外的项目文件。

推送只用一条 SSE 连接,run、output、targets 三类事件共用它,切换目录不重开;面板落后于缓冲时服务端下发 reset,重新拉一次状态就接上。日志只在内存里,保留最近 40 次运行、单次留最新约 400 KB,超出截断并标记,项目目录里一个文件都不会多写。服务一停,这些日志也就没了。

面板 → 宿主 → 本地服务 → make,一条 SSE 事件流回传

装起来只要粘一个地址

Settings → Extensions 里贴这个地址,允许权限就完事:

https://github.com/open-tecmz/openchamber-makefile/releases/latest/download/openchamber-makefile-latest.zip

或者贴 release 分支的 git 地址(https://github.com/open-tecmz/openchamber-makefile.git#release),好处是版本号变了能从设置里直接 Update,zip 装法得手动重贴。装完从侧栏的扩展区点开 Makefile 面板,它会跟着你打开的项目走。扩展不在 VS Code 和移动 App 里加载,网页端和桌面端都行。

跑得和你在终端里敲一样

服务启动时向你的 $SHELL 要一次环境,PATH、nvm、pyenv 这些导出全部交给每次运行,看到的环境变量和你打开终端时一致。注意只要一次:改了 ~/.zshrc 或者换了 node 版本,重启扩展或面板才会带进来;bash 用户读的是 ~/.bashrc 那一套,以你自己的 $SHELL 为准。

其他几件小事

  • 面板文案跟随 OpenChamber 语言,英文、简体中文、繁體中文三套都在;想加一门语言只是改 src/i18n.ts。
  • 同一个面板可以整页打开(contributes.page),输出特别多的构建看着舒服。
  • recipe,也就是目标下面那串命令,仍跑在 make 自己的 /bin/sh 下,需要别的 shell 就在 Makefile 里写 SHELL := /bin/zsh。
  • 服务冷启动时面板先显示 connecting,第一次请求会把它拉回来。
  • 仓库:https://github.com/open-tecmz/openchamber-makefile ,Apache-2.0。

你项目里那个 Makefile,值得被点一次

装上之后,你跑的第一个 target 会是 build 还是 test?顺手把 Makefile 里最不讲理的那个目标名晒出来。我先来:clean 删的那几个目录,我到现在没敢细看。

看得见的目标,才会被跑起来。

QQ
微信
客服