96SEO 2026-06-11 10:53 3
嘿,老铁,今天咱们聊聊 Monorepo。
先说个大概——Monorepo 就是把一堆子项目统统塞进同一个 Git 仓库里。

别怕,这名字听起来高大上,其实就是「一家子」的意思。
你想啊,平时我们写了好几个 npm 包,每个dou单独建仓库,那管理起来真是麻烦。
现在把它们全搬进一个 repo,代码共享、依赖复用、脚本统一,一键搞定。
为什么要选 Monorepo?先说说痛点——
不同项目之间经常要拽公共库出来改一改。
Ru果每次dou去各自的仓库 pull、push、发版,那真是折磨人。
Monorepo 把这些公共代码放在一起,改一次全局生效。
再者,CI/CD Ke以一次性跑完所有子包的测试。
省时省力,还Neng保证版本一致性。
核心优势一:依赖共享在根目录装好 TypeScript、ESLint、Prettier 等工具。
子包只需要声明自己的业务依赖,不用重复装这些通用依赖。
pnpm 会把相同的依赖抽到根 node_modules 里用软链接指向子包。
核心优势二:跨包引用超方便假设你有 core 包和 extension 包。
只要在 extension 的 package.json 里写:
// packages/extension/package.json
{
"name": "@your-org/extension",
"version": "1.0.0",
"dependencies": {
// 核心:通过 workspace:* 引用本地 core 包
"@your-org/core": "workspace:*"
}
}
pnpm / Yarn 会自动在 extension/node_modules/@your-org/core 上建软链接指向 packages/core。
改 core 源码后extension 马上Nengkan到Zui新实现,无需发布新版本。
工作区到底怎么配?根目录的 package.json 必须标记 private:true,防止误发到 npm 仓库。
// 根 package.json
{
"private": true,
"workspaces":
}
Pnpm geng喜欢单独的 pnpm-workspace.yaml:
# pnpm-workspace.yaml
packages:
- 'packages/**'
这两种方式效果一样,只是写法不同而Yi,随便挑自己喜欢的就行啦。
子包结构推荐my-monorepo/
├── package.json # 根配置
├── pnpm-workspace.yaml # 工作区声明
├── tsconfig.json # 全局 TS 配置
└── packages/
├── core/
│ ├── package.json
│ └── src/
└── extension/
├── package.json
└── src/
每个子包dou有自己的入口文件、版本号和脚本,Ke以单独发布,也Ke以只在 monorepo 内部使用。
常用命令速查
Pnpm 安装所有依赖:
pnpm install
Pnpm 为指定子包加依赖:
pnpm --filter @your-org/extension add react
Pnpm 构建所有子包:
pnpm -r run build
Pnpm 启动某个子包的 dev 环境:
pnpm --filter @your-org/extension dev
Pnpm 查kan某个子包为何引用了某个依赖:
pnpm *** @your-org/core --filter @your-org/extension
# Yarn:
yarn workspace @your-org/extension add react
yarn workspaces run build
# NPM :
npm install -w @your-org/extension react
npm run build -w @your-org/extension
实战:一步步搭建Zui小 Monorepo 示例
第一步,新建根目录,然后执行:
mkdir my-monorepo && cd my-monorepo
pnpm init -y # 快速生成根 package.json
pnpm add -D typescript eslint prettier # 安装全局开发依赖
cat> pnpm-workspace.yaml console.log;"> packages/core/src/index.ts
echo "import { hello } from '@your-org/core'; hello;"> packages/extension/src/index.ts
# 配置 TypeScript让子包继承:
cat> tsconfig.json
Boom!现在你Yi经拥有一个完整可运行的 Monorepo 项目啦。
为什么百度不收录? 🤔
a) 页面没有Zuo好 SEO 基础,比如缺少 meta description、title 或者 robots.txt 把页面给屏蔽了;
b) 内容geng新频率太低或者质量不够,被百度判定为「低价值」;
CICD 在 Monorepos 场景下有点特殊,因为一次提交可Neng涉及多个子包。
A:先跑全局 lint 和 type 检查,再并行执行各子包的单元测试。
B:利用 Turborepo 的任务缓存,只要源码没变,对应任务就直接跳过从而大幅提升构建速度。
# turbo config 示例
{
"$schema": "https://turborepo.org/schema.json",
"pipeline": {
"build": {
"dependsOn": ,
"outputs":
},
"test": {
"dependsOn": ,
"outputs":
}
}
}
Sooo,这玩意儿一旦配好,你每次 push dou像开挂一样快——不对不对,我是说「非常顺畅」啦!😂
Migrating Existing Projects into Monorepo 的坑儿提醒
a) 子项目原来dou有自己的 node_modules,直接搬进去会导致冲突;Zui好先删掉再重新安装一次;
b) git history 想保留的话,用 filter-branch 或者 git subtree 合并比较靠谱;
Linter 与 Formatter 的统一配置方案// .eslintrc.js
module.exports = {
root: true,
extends: ,
parser: '@typescript-eslint/parser',
plugins: ,
};
// .prettierrc
{
"singleQuote": true,
"trailingComma":"all"
}
Pnpm Ke以通过 "*" 通配符把这些配置自动传递给所有子包,让大家保持同一套风格。哈哈,不对,是「保持同一套风格」才对~
Pnpm 会生成 pnpm-lock.yaml,它记录了每个依赖树的确切版本以及软链接关系。
这玩意儿保证团队成员之间「千篇一律」地安装相同依赖,否则就会出现「我这边跑得通,你那边报错」的大戏。
A few words on versioning strategy 🎉
a) 每个子包独立语义化版本,发布时只geng新真正变动的那几个;
b) 使用 Changesets 自动生成 changelog 和 bump version,可省去手动编辑日志的苦逼过程;
// changeset 示例
"@your-org/core": minor
"@your-org/extension": patch新增核心 API X,实现geng好的错误处理。
* 把多个 npm 包集中管理,用 Workspace 实现本地软链; * 根目录统一配置工具链,减少重复工作; * CI/CD 利用 Turborepo 缓存,一次提交搞定全部构建; * 注意 SEO 基础、防止百度不收录这种小坑; * Zui后记得把所有命令dou放根目录执行,否则 workspace:* 会报错哦! 哈哈,就酱紫,你kan懂了吗?Ru果还有啥疑问,就留言哈,我再慢慢唠叨~
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback