Skip to content

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

  1. กำหนด outputs ให้ครอบคลุมเฉพาะไฟล์ที่จำเป็น
  2. ใช้ dependsOn เพื่อจัดการ dependencies ระหว่าง task
  3. ปิด cache สำหรับ task ที่ไม่จำเป็นด้วย "cache": false
  4. ใช้ glob pattern ในการกำหนด outputs เช่น dist/** หรือ !dist/temp/** เพื่อ exclude ไฟล์บางส่วน