参考官网:https://turbo.build/repo/docs
开始
安装全新的项目
pnpm dlx create-turbo@latest
测试应用包含:
- 两个可部署的应用
- 三个共享库
运行:
pnpm install
pnpm dev
会启动两个应用web(http://localhost:3000/)、docs(http://localhost:3001/)。
可以看到,两个应用都依赖了packages下的ui组件。
安装到已有项目中
按官方的说法,Turborepo可以安装到所有类型的应用中,不仅仅是multirepo,还有singlerepo。
安装turbo
官方建议是同时安装到全局和应用中
# Global install
pnpm add turbo --global
# Install in repository
pnpm add turbo --save-dev
新增一个turbo.json
文件
# 示例应用中的json
{
"$schema": "https://turbo.build/schema.json",
"globalDependencies": ["**/.env.*local"],
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": [".next/**", "!.next/cache/**"]
},
"lint": {
"dependsOn": ["^lint"]
},
"dev": {
"cache": false,
"persistent": true
}
}
}
编辑.gitignore
+ .turbo
初始化仓库
下面以monorepo为例。
目录结构:
最低要求
包管理
官方推荐apps目录下存放应用,packages目录下存放公共库或者工具类。
packages:
- "apps/*"
- "packages/*"
monorepo用pnpm比较好,所以只贴了pnpm的例子,如果要看yarn的,可以看Structuring a repository | Turborepo
使用此配置,apps或packages目录中包含package.json的每个目录都将被视为一个包。
Turborepo不支持嵌套,例如apps/或者packages/。
如果一定要嵌套,可以配置为packages/和packages/group/,然后不要创建packages/group/package.json文件
根目录package.json
示例:
{