什么是 monorepo?
Monorepo 是一种软件项目管理方式,将多个相关的子项目(如前端组件库、API 服务、CLI 工具等)存储在同一个代码库中。相比于传统的多仓库管理方式,monorepo 有以下优点:
- 统一管理:统一管理所有子项目的版本、依赖、构建、测试等工作,可以减少重复劳动、提高效率。
- 共享模块:各子项目之间可以共享代码模块,提高代码复用率。
- 统一发布:可以通过统一的发布流程来发布所有子项目,避免手动发布出错。
什么是 create-monorepo?
create-monorepo 是一个用于创建 monorepo 项目的 Node.js 工具。它可以帮助你快速创建一个基于 Lerna 的 TypeScript monorepo 项目,并且内置了一些常用的配置和脚本,让您可以更加专注于业务代码的开发。
使用方法
1. 安装 create-monorepo
npm install -g create-monorepo
2. 创建项目
create-monorepo my-monorepo cd my-monorepo
3. 添加子项目
运行以下命令添加一个名为 my-package
的子项目:
npm run create-package my-package
运行后将提示您输入子项目的类型(library、app、cli),选择相应的类型即可。
4. 开发子项目
在 packages/
目录下可以看到刚刚创建的 my-package
子项目,里面已经包含了一些示例代码和测试代码。我们可以在 src/
目录下编写业务代码,可以使用 TypeScript、ES6+ 等技术栈。
5. 构建和测试
运行以下命令可以构建所有子项目:
npm run build
运行以下命令可以为所有子项目运行测试:
npm run test
6. 发布子项目
运行以下命令可以为所有子项目打标签和发布版本:
npm run release
运行命令后会提示您输入新版本的号码和相关变更。如果您已经配置了相关的发布账号和仓库,那么打标签和发布版本的过程都可以自动完成。
高级用法
配置文件
create-monorepo 使用了一个名为 monorepo.config.js
的配置文件,你可以在其中进行更加详尽的配置。
一个简单的配置示例:
const path = require('path'); module.exports = { packagesDir: path.join(__dirname, 'components'), buildCommand: "npm run build", };
上述配置文件将 monorepo 的所有子项目存储在 components/
目录下,并将构建命令的名称设置为 npm run build
。
您可以查看 create-monorepo 的 默认配置文件 以及 Lerna 的完整配置选项 来进行更加高级的配置。
自定义脚本
create-monorepo 的所有脚本都存储在 scripts/
目录下,您可以在其中进行自定义,例如:
// scripts/my-script.js console.log('hello world');
// package.json { "scripts": { "my-script": "node scripts/my-script.js" } }
之后您就可以通过 npm run my-script
命令来运行您的自定义脚本了。
总结
通过 create-monorepo,我们可以轻松地创建一个 TypeScript 的 monorepo 项目,并且享受到 monorepo 带来的诸多优势。在使用过程中,我们还可以进行更加丰富的配置和自定义,以满足不同的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055aaa81e8991b448d837c