Vitest · เริ่มต้นกับ Vitest
ติดตั้ง `vitest`
เรียนรู้การติดตั้ง Vitest เป็น dependency สำหรับ development
ทำไม Vitest จึงเป็น development dependency
Vitest เป็นเครื่องมือที่ใช้ตอนพัฒนาและตรวจโค้ด ไม่ใช่โค้ดที่ต้องถูกส่งไปทำงานกับผู้ใช้ใน runtime ของแอป ดังนั้นเราติดตั้งด้วยตัวเลือก `-D` เพื่อบันทึกไว้ใน `devDependencies` ของ `package.json`
การบันทึก dependency ในโปรเจกต์ทำให้สมาชิกทีมใช้ package manager ติดตั้งชุดเดียวกันได้ เมื่อ clone โปรเจกต์ใหม่ เราไม่ต้องพึ่งการติดตั้ง Vitest แบบ global หรือเดาว่าเครื่องของแต่ละคนมี version ใดอยู่
รันจากโฟลเดอร์ที่มี `package.json` ของ Task service
ตรวจ runtime ก่อนเริ่ม
Vitest รุ่นปัจจุบันระบุ Node.js และ Vite version ขั้นต่ำไว้ในเอกสารทางการ ตัวอย่างนี้ใช้ Node `>=18` และ Vite `>=5`; เมื่อ version เปลี่ยน ควรตรวจ requirement ของ version ที่กำลังติดตั้งอีกครั้ง
คำสั่งติดตั้งเปลี่ยนอะไรในโปรเจกต์
คำสั่งติดตั้งไม่ได้แค่ดาวน์โหลดไฟล์ลงเครื่อง แต่ยังบันทึกความตั้งใจของโปรเจกต์ไว้ใน manifest และ lockfile ด้วย จึงควรอ่านผลลัพธ์เป็นสามชั้น: สิ่งที่ประกาศไว้, สิ่งที่ถูก resolve และสิ่งที่ติดตั้งอยู่ในเครื่องปัจจุบัน
version จริงอาจต่างกันตามวันที่ติดตั้ง แต่ `vitest` ควรอยู่ใน `devDependencies`
อย่าแก้ `node_modules` ด้วยมือ เพราะโฟลเดอร์นี้สร้างใหม่ได้จาก `package.json` และ lockfile เมื่อมีคนอื่น checkout โปรเจกต์ ให้ใช้ `pnpm install` เพื่อสร้าง dependency จากข้อมูลที่โปรเจกต์บันทึกไว้
อ่าน package manifest ให้ถูกส่วน
`typescript` อาจมีอยู่ก่อนแล้ว เพราะเป็นพื้นฐานของโปรเจกต์ ตัวอย่างนี้เพิ่มเฉพาะ `vitest` ในฐานะเครื่องมือสำหรับ development
| ตำแหน่ง | ความหมาย | ควรทำอย่างไร |
|---|---|---|
| devDependencies | เครื่องมือที่ใช้พัฒนาและตรวจโค้ด | ให้ Vitest อยู่ที่นี่ |
| dependencies | package ที่ runtime ของแอปต้องใช้ | อย่าย้าย Vitest มาที่นี่โดยอัตโนมัติ |
| node_modules | ผลลัพธ์ที่ติดตั้งในเครื่อง | ไม่แก้หรือ commit ด้วยมือ |
ถ้าคำสั่งตรวจ version ใช้งานไม่ได้ ให้ตรวจตามลำดับ: อยู่ในโฟลเดอร์ที่มี `package.json` หรือไม่, ติดตั้ง dependency แล้วหรือยัง, และใช้ package manager ตรงกับ lockfile ของโปรเจกต์หรือไม่
สรุปขั้นตอนการติดตั้ง
การติดตั้งเสร็จแล้วไม่ได้แปลว่ามีคำสั่งสั้นสำหรับทีม ขั้นถัดไปคือผูก Vitest เข้ากับ `scripts.test`
กฎสำคัญ
ติดตั้งแบบ local
ใช้ Vitest จาก dependency ของโปรเจกต์ เพื่อให้ command และ version สอดคล้องกัน
`-D` หมายถึง development dependency
ตัวเลือกนี้สื่อว่า package ใช้ตอนพัฒนาและตรวจโค้ด ไม่ใช่ feature หลักของ runtime
ตรวจผลหลังติดตั้ง
ดูทั้ง package.json และคำสั่ง `pnpm exec vitest --version` ไม่เดาจากการมีโฟลเดอร์ node_modules อย่างเดียว