Turbo.json Configuration
turbo.json
เป็นไฟล์ configuration ที่ใช้ในการกำหนดการทำงานของ Turborepo โดยประกอบด้วยส่วนหลักๆ ดังนี้
โครงสร้างพื้นฐาน
json
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"test": {
"dependsOn": ["build"],
"outputs": []
}
}
}
การกำหนด Pipeline
Pipeline ใช้ในการกำหนด task ต่างๆ และความสัมพันธ์ระหว่าง task
dependsOn
: กำหนด task ที่ต้องทำงานก่อน"^build"
หมายถึงต้องรัน build task ของ dependencies ก่อน"build"
หมายถึงต้องรัน build task ใน package นี้ก่อน
outputs
: กำหนดไฟล์ output ที่จะถูก cache
การกำหนด Cache
Turborepo จะทำการ cache output ของ task เพื่อเพิ่มความเร็วในการทำงานครั้งต่อไป โดยสามารถกำหนดได้ในส่วน outputs
json
{
"pipeline": {
"build": {
"outputs": ["dist/**", "!dist/temp/**"]
}
}
}
ตัวอย่างการใช้งาน
json
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"],
"cache": true
},
"lint": {
"outputs": []
},
"test": {
"dependsOn": ["build"],
"outputs": ["coverage/**"]
}
}
}
Best Practices
- กำหนด
outputs
ให้ครอบคลุมเฉพาะไฟล์ที่จำเป็น - ใช้
dependsOn
เพื่อจัดการ dependencies ระหว่าง task - ปิด cache สำหรับ task ที่ไม่จำเป็นด้วย
"cache": false
- ใช้ glob pattern ในการกำหนด
outputs
เช่นdist/**
หรือ!dist/temp/**
เพื่อ exclude ไฟล์บางส่วน