Dark mode
การใช้งาน Turborepo
1. setup file structure เป็นประมาณนี้
md
my-turborepo/
├── apps/
│ ├── web/
│ │ ├── package.json
│ │ └── ...
│ └── docs/
│ ├── package.json
│ └── ...
├── packages/
│ ├── ui/
│ │ ├── package.json
│ │ └── ...
│ └── utils/
│ ├── package.json
│ └── ...
├── package.json
├── turbo.json
└── pnpm-workspace.yaml
2. ต้องกำหนด workspace ที่จะใช้
yaml
packages:
- "packages/*"
- "apps/*"
json
{
"workspaces": ["packages/*", "apps/*"]
}
json
{
"workspaces": ["packages/*", "apps/*"]
}
json
{
"workspaces": ["packages/*", "apps/*"]
}
3. ต้องกำหนด turbo.json
ต้องการกำหนด tasks ที่จะ runตรงกับทุก script ใน package.json ของแต่ละ project
json
{
"ui": "stream",
"$schema": "https://turbo.build/schema.json",
"remoteCache": {
"signature": true
},
"tasks": {
"build": {
"dependsOn": ["^build", "type-check"],
"outputs": ["dist/**", "build/**", "*.tsbuildinfo"],
"cache": true
},
"type-check": {
"dependsOn": ["^build"],
"outputs": [],
"cache": true
},
"test": {
"dependsOn": ["^build"],
"outputs": [],
"cache": true
},
"lint": {
"dependsOn": ["^build"],
"outputs": [],
"cache": true
},
"dev": {
"dependsOn": ["build"],
"cache": false
},
"clean": {
"outputs": ["dist", "build", "*.tsbuildinfo"]
}
}
}
4. กำหนด turbo ที่ package.json ที่ root และตรงตรงกันกับ package.json ที่แต่ละ project
json
{
"scripts": {
"build": "turbo build",
"test": "turbo test",
"lint": "turbo lint",
"dev": "turbo dev",
"clean": "turbo clean"
}
}
json
{
"scripts": {
"build": "pnpm run build",
"test": "pnpm run test",
"lint": "pnpm run lint",
"dev": "pnpm run dev",
"clean": "pnpm run clean"
}
}
json
{
"scripts": {
"build": "pnpm run build",
"test": "pnpm run test",
"lint": "pnpm run lint",
"dev": "pnpm run dev",
"clean": "pnpm run clean"
}
}
5. run task
json
{
"scripts": {
"build": "turbo build",
"test": "turbo test",
"lint": "turbo lint",
"dev": "turbo dev",
"clean": "turbo clean"
}
}
TODO add image
bash
turbo dev
bash
turbo build
bash
turbo lint