124、【Agent】【OpenCode】项目配置(tsconfig.json 与 package.json)
【声明】本博客所有内容均为个人业余时间创作所述技术案例均来自公开开源项目如GithubApache基金会不涉及任何企业机密或未公开技术如有侵权请联系删除背景上篇 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.jsBun 官方支持的子路径模式等价于import { foo } from ‘opencode/utils/helper’ → 解析为 opencode/src/utils/helper.tsimport { 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-nametsconfig.json可以看到项目下的所有tsconfig.json文件可以看到项目中所有的tsconfig.json如下可以看到有子包的地方除了有package.json还有tsconfig.json这俩文件虽然都是 JOSN 格式且经常出现在同一个目录中但其职责和设计目的完全不同简单来说package.json是写给 Node.js 等包管理器看的运行时与依赖契约而tsconfig.json则是写给 TypeScript 编译器看的类型检查与转译指令下面来详细看下维度package.jsontsconfig.json核心职责定义包的元数据依赖入口脚本等定义 TS 编译选项类型检查范围路径映射等主要消费者npm/pnpm/yarn/bunNode.js 运行时tscIDEVSCodeESLint 等是否 Node.js 标准是Node.js 官方规范否TypeScript 团队自定义缺失后果目录不被识别为包无法install或publishTS 回退到默认配置IDE 可能报错或行为异常Monorepo 中的角色workspace 协议依赖拓扑exports解析等项目引用baseUrl/paths别名增量编译等运行时影响直接影响程序如何被加载和执行仅影响构建检查阶段构建产物中不包含此文件结合之前的分析两者的配合方式非常清晰其中package.json负责包级别的连接比如workspaces告诉包管理器哪些子目录是内部包export告诉 BunNode.js 等在 import 时去哪里找文件dependencies声明这个包依赖谁binmaintypeprivate决定包作为整体如何被消费tsconfig.json则负责代码级别的连接如references告诉 tsc 子包之间的类型依赖关系支持增量编译paths让 IDE 和 tsc 能解析opencode/utils/*这类别名注意这里和package.json的exports是两套独立机制include和exclude控制哪些文件参与类型检查compilerOptions.strict等统一整个 Monorepo 的类型安全级别OK本篇先到这里如有疑问欢迎评论区留言讨论祝各位功力大涨技术更上一层楼更多内容见下篇 blog

相关新闻

随机化算法在几何相交图最大独立集问题中的应用与性能分析

随机化算法在几何相交图最大独立集问题中的应用与性能分析

1. 从“硬骨头”到“巧方法”:为什么我们需要随机化算法在计算几何和组合优化的世界里,几何相交图的最大独立集问题,一直是个公认的“硬骨头”。想象一下,你面前有一堆形状各异的几何物体——可能是一堆矩形、圆盘,或者…

2026/6/21 4:41:09阅读更多 →
免费Windows 11优化工具Win11Debloat:一键清理系统垃圾,性能提升50%

免费Windows 11优化工具Win11Debloat:一键清理系统垃圾,性能提升50%

免费Windows 11优化工具Win11Debloat:一键清理系统垃圾,性能提升50% 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other cha…

2026/6/21 4:41:09阅读更多 →
Trae接入DeepSeek网页版:OpenAI兼容协议与反代适配实战

Trae接入DeepSeek网页版:OpenAI兼容协议与反代适配实战

1. 项目概述:在 Trae 中接入网页版 DeepSeek 的真实路径与底层逻辑Trae 这个名字最近在开发者和AI工具爱好者圈子里出现频率极高,但很多人第一次看到时会下意识念成“t-ray”或者“tray”,其实它标准读法是 /treɪ/,和英文单词 “…

2026/6/21 4:41:09阅读更多 →
Netgear路由器变砖修复指南:使用nmrpflash工具快速恢复设备

Netgear路由器变砖修复指南:使用nmrpflash工具快速恢复设备

Netgear路由器变砖修复指南:使用nmrpflash工具快速恢复设备 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当您的Netgear路由器因固件升级失败、意外断电或错误操作而无法正常启动时&#xf…

2026/6/21 6:16:15阅读更多 →
免费开源音频标注工具:5分钟快速上手完整指南

免费开源音频标注工具:5分钟快速上手完整指南

免费开源音频标注工具:5分钟快速上手完整指南 【免费下载链接】audio-annotator A JavaScript interface for annotating and labeling audio files. 项目地址: https://gitcode.com/gh_mirrors/au/audio-annotator 你是否正在寻找一款简单易用、功能强大的音…

2026/6/21 6:16:15阅读更多 →
esp32开发与应用(继续升级到3.5寸屏幕)

esp32开发与应用(继续升级到3.5寸屏幕)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】前面我们已经升级了一次屏幕,当时是从240*240,升级到320*240。在这过程中,屏幕驱动ic也发生了改变。这一次&…

2026/6/21 6:16:15阅读更多 →
5步高效部署HunterPie:Monster Hunter: World游戏覆盖层终极指南

5步高效部署HunterPie:Monster Hunter: World游戏覆盖层终极指南

5步高效部署HunterPie:Monster Hunter: World游戏覆盖层终极指南 【免费下载链接】HunterPie-legacy A complete, modern and clean overlay with Discord Rich Presence integration for Monster Hunter: World. 项目地址: https://gitcode.com/gh_mirrors/hu/Hu…

2026/6/21 6:16:15阅读更多 →
[Django] DisallowedHost突然爆发?ALLOWED_HOSTS=‘*‘为什么没用+中间件根治方案(附代码)

[Django] DisallowedHost突然爆发?ALLOWED_HOSTS=‘*‘为什么没用+中间件根治方案(附代码)

Django 生产环境 DisallowedHost 突然爆发?ALLOWED_HOSTS[*] 为什么没用? TL;DR:你的 Django 项目突然开始报 DisallowedHost,日志里 Host 是一个奇怪的下划线 _,而你明明设了 ALLOWED_HOSTS [*]。问题出在 Django 的…

2026/6/21 6:16:15阅读更多 →
MMEmb-R1框架:多模态嵌入与推理增强技术解析

MMEmb-R1框架:多模态嵌入与推理增强技术解析

1. MMEmb-R1框架解析:多模态嵌入的推理增强革命在跨模态检索和推荐系统的实际应用中,我们常常遇到这样的困境:当用户输入"樱花树下女孩喂猫的照片"时,传统嵌入模型可能无法准确关联"女孩喂食的对象是什么"这类…

2026/6/21 6:11:15阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →