20、【Agent】【OpenCode】源码构建(依赖安装)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Agent】【OpenCode】源码构建(TypeScript&JavaScript)

分析了 Bun 工具集性能提升的另一大原因:内置工具链,零转译开销,然后提到了 OpenCode 是个典型的 JavaScript/TypeScript 项目,并分析了 TypeScript 和 JavaScript 的联系与区别,一句话总结:TypeScript = JavaScript + 类型系统(Type System) + 现代语法糖,然后提到了关键点:虽然 TS 不能直接运行,必须先编译成 JS 才能被引擎执行,但 Bun 等现代工具可以自动编译并运行,算是间接运行 TS,然后分析了类型系统(Type System)是 TypeScript 最大的价值所在,并对比了 JS 和 TS 在函数参数类型检查上的不同,最后列举了 TypeScript 新增的核心特性,下面继续分析

OpenCode

上篇 blog 对比了 JS 和 TS 在函数参数类型检查上的不同,下面再对比下开发体验

场景 JavaScript TypeScript
写错属性名 运行时报错 写代码时就提示
看不懂第三方库 API 靠文档猜 编辑器自动提示参数和返回值
重构大型项目 容易漏改,风险高 改一处,所有相关地方自动报错
团队协作 靠注释约定类型 天然支持类型本身

所以可以看到大型项目(比如 VSCode,OpenCode 等)几乎都用 TypeScript

下面再看 TS → JS 的编译过程,假设有 TS 代码如下

javascript 复制代码
function greet(name: string): string {
  return "Hello, " + name;
}

经过 TS 编译器输出后,JS 代码如下

javascript 复制代码
function greet(name) {
  return "Hello, " + name;
}

可以看到类型信息被擦除,只剩下干净的 JavaScript 脚本

而像 Bun 这样的现代工具,之所以看起来像能直接运行 TS 代码,其实是它们在后台自动编译了 TS → JS,然后立即运行生成的 JS,所以给人感觉 TS 能直接跑,其实还是转换成了 JS,比如

bash 复制代码
bun run my-script.ts

这条命令执行的其实是自动编译 TS + 运行 JS

最后再总结下两者的区别

对比项 JS TS
是否需要编译 否,可以直接运行 是,必须编译成 JS
类型系统 动态类型(运行时才知道) 静态类型(写代码时就知道)
适合项目规模 小脚本,简单页面 中大型应用,团队项目
错误发现时机 运行时 编码 / 编译时
学习成本 稍高(需学习类型语法)
生态兼容性 全兼容 编译后全兼容

OK,终端输入

bash 复制代码
bun --help

可以查看 bun 命令的信息如下

接下来构建 OpenCode 源码的第一步是安装依赖,使用 install 命令,该命令会下载项目运行或开发所需的第三方库 ,可以类比 npm installyarn install 等命令,该命令会读取 package.json 文件中的 dependencies 和 devDependencies

然后从 npm registry 或配置的镜像源中下载这些包,存入本地缓存(Bun 用高效数据库存储,不是传统的 node_modules),然后生成或更新 bun.lockb 锁文件,确保团队的依赖保持一致

安装依赖的过程中发现卡住了

大概是因为默认从 npm 官方源(registry.npmjs.org)下载,而该源在国内访问极慢或容易被干扰,不过虽然 Bun 不像 npm 那样直接支持 .npmrc ,但它完全兼容 npm 的 registry 协议,所以可以临时指定 registry 强制使用国内镜像源(比如淘宝 NPM 镜像),终端输入

bash 复制代码
bun install --registry https://registry.npmmirror.com

https://registry.npmmirror.com 是淘宝 NPM 镜像,对国内访问速度极快,该命令会从淘宝镜像下载所有包,生成的 bun.lockb 也会记录这个 registry,后续 bun install 也会自动沿用

可以看到依赖安装成功


OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】源码构建(项目构建)

相关推荐
Mid_search21 分钟前
随机排列与Fisher-Yates算法
人工智能·深度学习·强化学习·随机排列·fisher-yates
怕浪猫4 小时前
设计你自己的可替换能力:三段式 Seam 实战,从需求到上线
agent·产品
ZGIAI5 小时前
ZGI Workflow:条件分支走错时先查哪一层
人工智能·架构
X54先生(人文科技)5 小时前
《元创力》纪实录 · 桥段 《窑变纪元:一份来自星历2227年的深空考古笔记》
人工智能·开源·ai写作·零知识证明
ZGIAI5 小时前
ZGI 文件产物:生成报告后怎样交付
人工智能·架构
东方-教育技术博主5 小时前
自动编码在教育场景中的重要性:一项基于多源证据的深度综述
大数据·人工智能
骥龙5 小时前
模块二:Ollama本地模型部署与OpenCode代理配置
人工智能
阡之尘埃5 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
Regentsoft丽晶软件5 小时前
品牌方新品上市促销政策无法实时同步经销商,有没有支持总部-经销商-终端一站式的分销解决方案?
人工智能·经验分享·数据库架构
liuqs3325 小时前
机器人产业加速发展,制造业正在迎来新的自动化探索
大数据·人工智能