Skip to content
Grok

การใช้งาน 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