Skip to content

A monorepo boilerplate using pnpm, turborepo, dumi, and changesets.

License

Notifications You must be signed in to change notification settings

Jtrust/monorepo-starter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Zhang JuntaoZhang Juntao
Zhang Juntao
and
Zhang Juntao
Sep 28, 2024
4795a05 · Sep 28, 2024

History

2 Commits
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024
Sep 28, 2024

Repository files navigation

Monorepo boilerplate

A monorepo boilerplate using pnpm (package-manager), turborepo (task-runner), dumi(doc-generator), and changesets (publisher).

这是一个Monorepo项目架构模板,能够便捷地进行npm包的开发和文档管理。相关技术如下:

  • pnpm 高性能的包管理器
    • 节省磁盘空间。使用硬链接和符号链接,避免重复安装相同的依赖,显著减少了项目的磁盘占用。
    • 安装速度更快。在安装依赖时速度更快,因为它能够重用缓存中的包,而不是每次都重新下载。
    • 严格的依赖关系。解决了幽灵依赖的问题。
  • turborepo 高性能的构建工具
    • 增量构建。通过智能依赖图,仅重新构建修改过的部分,从而加快构建速度。
    • 并行执行。支持任务的并行执行,充分利用多核 CPU,提升构建效率。
    • 缓存机制。内置缓存功能,能够缓存构建输出,减少重复工作。即使在不同机器上,也能复用缓存。
  • dumi 静态站点框架,非常适合文档生成
    • 内置文档路由。自动生成文档路由,能够根据目录结构和文件自动组织文档内容。
    • 组件演示。支持实时预览和演示组件,帮助开发者和用户快速了解组件的用法。
  • changesets 用于管理版本控制和发布流程的工具
    • 简化版本管理。通过创建更改集(changeset),自动管理和更新版本号,减少手动干预。
    • 支持多包版本管理。在 monorepo 中,可以针对多个包进行版本控制,轻松处理各个包的版本升级和发布。
    • 生成变更日志。自动生成变更日志(changelog),记录每个版本的更改,提高项目的可追溯性和透明度。
    • 灵活的发布策略。支持按需发布,允许开发者选择哪些包需要发布,灵活应对不同的发布场景。

如何使用?

脚本运行

首次执行pnpm run prepack,然后执行pnpm run doc:dev,访问:http://localhost:8000/ 查看文档演示。

其它脚本如下:

{
  // ...
  "scripts": {
    "prepare": "husky", // 执行install时自动运行 Husky 命令来设置 Git 钩子
    "prepack": "pnpm install && turbo build", // 首次执行
    "doc:dev": "dumi dev", // 文档开发
    "doc:build": "NODE_ENV=production dumi build", // 文档打包
    "docs:preview": "dumi preview", // 预览打包后的文档
    "dev": "turbo dev", // 运行packages文件夹下的所有子包的dev
    "build": "turbo build", // 打包所有子包
    "lint": "turbo lint", // 运行代码检查
    "clean": "turbo clean && rm -rf node_modules", // 清理缓存并删除 node_modules 目录
    "changeset": "changeset", // 创建变更集
    "version-packages": "changeset version", // 基于 Changesets 定义的改动自动更新包的版本号
    "release": "turbo build && changeset publish" // 构建所有包并发布新版本
  }
}

添加子包

  • packages/barpackages/foo是两个示例,按照packages/xx/src/index.js结构(复制一个子包改名即可)。
  • 子包中的README.md会被自动解析生成文档网页,更推荐就近维护文档的方式。当然也支持在docs/下新建一个文件编写。

About

A monorepo boilerplate using pnpm, turborepo, dumi, and changesets.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published