尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

124、【Agent】【OpenCode】项目配置(tsconfig.json 与 package.json)

124、【Agent】【OpenCode】项目配置(tsconfig.json 与 package.json)
📅 发布时间:2026/6/21 4:47:48

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

背景

上篇 blog
【Agent】【OpenCode】项目配置(应用级 Monorepo)
分析了 OpenCode 历史的提交记录,其中版本号的变更基本都是由 OpenCode 单独提一个合入请求 MR 进行更新的,单次 MR 内,只有更新版本号这一个动作,并且这个动作会更新掉所有子包里的版本号,并将修改同步到bun.lock,结合历史提交记录,可以推断出 OpenCode 的子包大概是不用发布到 npm 的,属于应用级别的 Monorepo,而不是库级别的 Monorepo,然后接着分析了两种 Monorepo 的区别,接着分析了另一个关键配置字private,当private为true时,npm/yarn/pnpm 会拒绝执行 npm publish,也说明了 OpenCode 使用的是应用级别的 Monorepo,接着分析了export配置字在库级别 Monorepo 和应用级别 Monorepo 的区别,下面继续分析

OpenCode

下面接着分析export配置

这里的"./*": "./src/*.ts"是 Node.js,Bun 官方支持的子路径模式,等价于

import { foo } from ‘opencode/utils/helper’ → 解析为 opencode/src/utils/helper.ts
import { bar } from ‘opencode/services/auth’ → 解析为 opencode/src/services/auth.ts

任意深度,任意文件,只要src/下存在对应的.ts文件就能导入

另外注意,这里指向的是源码.ts文件,而不是dist/构建产物,因为 Bun 原生支持直接执行 TypeScript,所以支持exports通配符可以直接指向源码

OK,最后再来分析下package.json和tsconfig.json,子包下唯二的两个 JSON 配置文件

终端输入

find.-path"./opencode/node_modules"-prune-o-name"tsconfig.json"

可以看到项目下的所有tsconfig.json文件,可以看到项目中所有的tsconfig.json如下

可以看到,有子包的地方,除了有package.json,还有tsconfig.json,这俩文件虽然都是 JOSN 格式,且经常出现在同一个目录中,但其职责和设计目的完全不同,简单来说,package.json是写给 Node.js 等包管理器看的运行时与依赖契约,而tsconfig.json则是写给 TypeScript 编译器看的类型检查与转译指令,下面来详细看下

维度package.jsontsconfig.json
核心职责定义包的元数据,依赖,入口,脚本等定义 TS 编译选项,类型检查范围,路径映射等
主要消费者npm/pnpm/yarn/bun,Node.js 运行时tsc,IDE(VSCode),ESLint 等
是否 Node.js 标准是(Node.js 官方规范)否(TypeScript 团队自定义)
缺失后果目录不被识别为包,无法install或publishTS 回退到默认配置,IDE 可能报错或行为异常
Monorepo 中的角色workspace 协议,依赖拓扑,exports解析等项目引用,baseUrl/paths别名,增量编译等
运行时影响直接影响程序如何被加载和执行仅影响构建,检查阶段,构建产物中不包含此文件

结合之前的分析,两者的配合方式非常清晰,其中

package.json负责包级别的连接,比如

  • workspaces告诉包管理器哪些子目录是内部包
  • export告诉 Bun,Node.js 等在 import 时去哪里找文件
  • dependencies声明这个包依赖谁
  • bin,main,type,private决定包作为整体如何被消费

tsconfig.json则负责代码级别的连接,如

  • references告诉 tsc 子包之间的类型依赖关系,支持增量编译
  • paths让 IDE 和 tsc 能解析@opencode/utils/*这类别名(注意,这里和package.json的exports是两套独立机制)
  • include和exclude控制哪些文件参与类型检查
  • compilerOptions.strict等统一整个 Monorepo 的类型安全级别

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog

相关新闻

  • GHunt实战指南:从Google邮箱挖掘公开情报的OSINT工具
  • PNX2015 VLD模块寄存器配置与错误处理实战指南
  • 2026年6月酱肉小笼包招商推荐,美食小吃/包子/手工小笼包/小吃/非遗红油小笼包/酱肉小笼包,酱肉小笼包招商推荐 - 品牌推荐师

最新新闻

  • MLMC梯度估计器:降低随机优化计算成本的方差缩减技术
  • 免费将Windows电脑变成专业级WiFi热点:VirtualRouter完全指南
  • 5步掌握JPEXS Free Flash Decompiler:Flash文件反编译终极指南
  • [Django] DisallowedHost突然爆发?ALLOWED_HOSTS=‘*‘为什么没用+中间件根治方案(附代码)
  • Pandas apply() 实战避坑指南:性能、类型与索引三大陷阱
  • 5分钟掌握英雄联盟内存换肤:R3nzSkin终极使用指南

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号