尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何给 sample-monorepo 添加新包?10 分钟学会 monorepo 扩展之道
如何给 sample-monorepo 添加新包10 分钟学会 monorepo 扩展之道【免费下载链接】sample-monorepoSample monorepo setup with npm workspaces and typescript project references项目地址: https://gitcode.com/gh_mirrors/sa/sample-monoreposample-monorepo是一个使用 npm workspaces 与 TypeScript project references 搭建的 monorepo 示例项目它把前端应用、共享组件和后端服务打包在同一个仓库里统一管理。本文将以实战方式演示如何给 sample-monorepo 添加新包10 分钟带你掌握 monorepo 扩展的核心方法无论你是前端新手还是全栈开发者都能快速上手。为什么选择 monorepo 架构先看懂它的价值 在动手之前先花 1 分钟理解 monorepo 能带来什么好处这样你才知道加一个新包到底在做什么统一依赖管理所有包共享同一个node_modules依赖版本不会打架。一键构建测试在根目录执行一条命令就能构建、测试全部子包。代码共享便利包与包之间可以直接互相引用就像引用本地文件一样简单。sample-monorepo 目前包含 3 个子包前端应用sample/app、共享组件sample/components和 Node 服务端sample/server它们正是 monorepo 协同工作的最佳示范。认识 sample-monorepo 的目录结构 在添加新包之前先熟悉一下仓库的整体布局sample-monorepo/ ├── package.json # 根配置声明 workspaces 和统一脚本 ├── tsconfig.json # 解决方案文件引用所有子包 ├── tsconfig.base.json # 子包共享的 TS 基础配置 └── packages/ ├── app/ # sample/app 前端应用 ├── components/ # sample/components 共享组件 └── server/ # sample/server 服务端关键配置都集中在根目录的 package.jsonworkspaces 声明和 tsconfig.jsonproject references 引用中它们是整个 monorepo 的总开关。添加新包的最快方法5 步实战教程 下面我们以新增一个名为sample/utils的工具包为例演示完整的添加流程。第一步创建包目录并准备 package.json在packages/下新建utils目录并创建 package.json 示例{ name: sample/utils, version: 1.0.0, type: module, exports: { .: ./dist/index.js, ./package.json: ./package.json }, files: [dist, src], license: MIT, private: true }命名遵循sample/前缀方便与现有包风格保持一致也便于npm run -w精确操作单个包。第二步编写 TypeScript 源码创建src/index.ts写入工具函数例如export function greet(name: string): string { return Hello, ${name}!; }再参考现有包的结构为它添加 tsconfig.json继承根配置并指定输出目录{ extends: ../../../tsconfig.base.json, compilerOptions: { outDir: ../dist } }注意输出目录指向包内的dist这样构建产物就和其他包保持一致了。第三步注册到根配置并打通引用这是最容易遗漏的一步打开根目录 tsconfig.json在references数组中追加新包{ files: [], references: [ { path: ./packages/app/src }, { path: ./packages/components/src }, { path: ./packages/server/src }, { path: ./packages/utils/src } ] }workspaces 声明packages/*会自动识别新目录无需额外修改根 package.json 的 workspaces 字段。第四步让其他包引用新包如果sample/components想使用工具函数只需在它的 package.json 中声明依赖dependencies: { sample/utils: ^1.0.0 }然后运行npm installnpm workspaces 会自动建立本地软链接。在源码中直接导入即可import { greet } from sample/utils;第五步构建并验证新包回到仓库根目录运行统一命令验证一切正常npm install # 安装并链接新依赖 npm run build # tsc --build 全量构建 npm test # 运行所有包的测试看到构建通过、测试全绿你的新包就正式加入 sample-monorepo 大家庭了包与包之间如何互相依赖sample-monorepo 的依赖链非常清晰值得参考sample/app→ 依赖sample/components前端组合共享组件sample/server→ 依赖sample/app服务端渲染前端应用这种分层依赖设计让每个包职责单一组件层专注 UI应用层专注业务服务层专注接口。你可以查看 app.tsx 与 main.tsx 观察它们是如何协作的。monorepo 常用命令速查表 ⚡记住这几个命令日常操作基本就够用了命令作用npm run build根目录一键构建所有子包npm test根目录运行全部测试npm run -w sample/utils build只构建指定子包npm run start:client启动前端开发服务器npm run start:server启动服务端新手容易踩的 3 个坑 ️忘了注册 references新包写好了却构建报错多半是根 tsconfig.json 没加引用。npm install 未执行新增包间依赖后必须重新npm install软链接才会建立。导出路径不一致exports字段指向dist但构建产物没生成时引用会报错先构建再引用。总结10 分钟学会 monorepo 扩展之道 ✅通过本文的 5 步教程你已经掌握了给 sample-monorepo 添加新包的完整流程建目录、写配置、注册引用、链接依赖、构建验证。monorepo 的核心思想就是一处管理、全局复用理解了 sample-monorepo 的扩展方式你就能轻松驾驭任何基于 npm workspaces 和 TypeScript project references 的大型项目。现在就去动手创建你的第一个新包吧【免费下载链接】sample-monorepoSample monorepo setup with npm workspaces and typescript project references项目地址: https://gitcode.com/gh_mirrors/sa/sample-monorepo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Mirror GraphQL API实战指南:查询文章、评论与用户信息的完整示例

Mirror GraphQL API实战指南:查询文章、评论与用户信息的完整示例

Mirror GraphQL API实战指南:查询文章、评论与用户信息的完整示例 【免费下载链接】Mirror A blogging tool powered by GitHub API. Write your blog on GitHub issue. 项目地址: https://gitcode.com/gh_mirrors/mirror9/Mirror Mirror 是一款基于 GitHub …

📅 2026/9/20 15:24:18
组合式架构第一版应保留哪些边界

组合式架构第一版应保留哪些边界

组合式架构第一版应保留哪些边界Vue3 的组合式 API 适合按业务能力组织状态与副作用。第一版不必预设所有抽象;先明确数据流、异步边界和清理方式,等性能测量或复用需求出现后再引入更复杂的机制。1. 从简单的数据流开始 Vue3 的 Proxy 机制会按访问需要…

📅 2026/9/20 18:44:35
供应链优化实战:SCOPE框架与耦合策略的Python实现

供应链优化实战:SCOPE框架与耦合策略的Python实现

最近在供应链优化项目中,我们团队反复遇到一个核心痛点:计划、采购、生产、物流等环节各自为政,局部最优却导致全局效率低下。库存积压与缺货并存,响应迟缓,成本居高不下。这正是典型的“孤岛式”供应链管理困境。本文…

📅 2026/9/24 11:14:10
MORE NEWS

更多资讯

📰

微信社群机器人开发指南:从协议解析到企业微信实战

1. 微信社群机器人开发概述微信社群机器人是一种基于微信生态的自动化工具,能够帮助群主或管理员高效管理微信群。这类机器人通常具备自动回复、关键词触发、内容推送、数据统计等功能,广泛应用于电商客服、知识付费、社群运营等场景。在实际开发中&…

📰

金融AI安全治理:从成本中心到增长引擎的转型

1. 金融AI收入增长背后的安全治理逻辑金融行业正在经历一场由AI技术驱动的深刻变革。去年某国际银行通过AI风控系统将信贷审批效率提升40%,同时降低15%的坏账率——这个典型案例揭示了安全治理与AI创收的共生关系。当算法模型开始直接处理客户的资金流时&#xff0c…

📰

互联网医院解决方案:在线问诊系统与AI智慧分诊开发

1. 互联网医院解决方案概述互联网医院正在重塑传统医疗服务的交付模式。这套在线问诊系统源码AI智慧分诊APP开发方案,为医疗机构提供了从患者接入到诊疗服务的全流程数字化解决方案。核心价值在于通过技术手段突破时空限制,将三甲医院的优质医疗服务延伸…

📰

蒙特卡洛方法实战CartPole:从回报设计到策略改进的完整落地

CartPole 这个环境几乎是每个接触强化学习的人绕不开的第一道坎。倒立摆本身不复杂:一根杆子铰接在小车上,小车左右移动,目标是让杆子别倒。但真动手写代码的时候,很多人会卡在同一个地方——策略到底怎么评估?回报怎么…

📰

微信社群机器人开发指南:从技术选型到合规实践

1. 微信社群机器人开发概述微信社群机器人是一种基于微信生态的自动化工具,能够模拟人类在微信群中的交互行为,实现自动回复、消息管理、数据统计等功能。这类机器人通常通过微信官方接口或第三方技术方案实现,主要服务于社群运营、客户服务、…

📰

多模态大模型中的System 2认知架构与工程实践

1. 多模态大模型中的System 2认知架构解析当GPT-4V能够看着一张破损自行车图片说"需要更换链条"时,它真的理解机械原理吗?这触及了当前多模态大模型最关键的认知鸿沟——感知能力(System 1)与真实推理(Syste…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬