การติดตั้ง Dependencies ด้วยคำสั่ง composer install
หลังจากที่เราได้สร้างไฟล์ composer.json และกำหนด Dependencies ที่ต้องการแล้ว ขั้นตอนต่อไปคือการติดตั้ง Dependencies เหล่านั้นลงในโปรเจกต์ของเรา ซึ่งทำได้ง่ายๆ ด้วยคำสั่ง composer install
composer install คืออะไร?
composer install เป็นคำสั่งของ Composer ที่ใช้สำหรับอ่านไฟล์ composer.json และติดตั้ง Dependencies ทั้งหมดที่ระบุไว้ในไฟล์นั้น รวมถึง Dependencies ของ Dependencies อีกทอดหนึ่ง (transitive dependencies) โดยจะดาวน์โหลด Dependencies เหล่านี้จากแหล่งที่มา (เช่น Packagist) และบันทึกไว้ในโฟลเดอร์ vendor ของโปรเจกต์
นอกจากนี้ composer install ยังสร้างหรืออัพเดทไฟล์ composer.lock ซึ่งเป็นไฟล์ที่เก็บเวอร์ชันที่แน่นอนของ Dependencies ที่ถูกติดตั้ง เพื่อให้มั่นใจได้ว่าทุกคนในทีมพัฒนาจะใช้ Dependencies เวอร์ชันเดียวกัน
การใช้งาน composer install
ในการใช้งาน composer install ให้เปิด Terminal หรือ Command Prompt ไปยัง Directory ที่มีไฟล์ composer.json อยู่ จากนั้นพิมพ์คำสั่ง:
composer install
เมื่อรันคำสั่งนี้ Composer จะ:
- อ่านไฟล์
composer.json - ตรวจสอบ Dependencies ที่ระบุไว้
- ดาวน์โหลด Dependencies จากแหล่งที่มา
- บันทึก Dependencies ไว้ในโฟลเดอร์
vendor - สร้างหรืออัพเดทไฟล์
composer.lock
เมื่อกระบวนการเสร็จสิ้น คุณจะเห็นโฟลเดอร์ vendor ถูกสร้างขึ้นใน Directory ของโปรเจกต์ ซึ่งภายในจะมี Dependencies ที่ถูกติดตั้งไว้
โฟลเดอร์ vendor คืออะไร?
โฟลเดอร์ vendor เป็น Directory ที่ Composer ใช้สำหรับเก็บ Dependencies ที่ถูกติดตั้งไว้ โดยปกติแล้ว เราจะไม่แก้ไขไฟล์ใดๆ ภายในโฟลเดอร์นี้ เพราะไฟล์เหล่านี้ถูกจัดการโดย Composer
เราควรเพิ่มโฟลเดอร์ vendor ใน .gitignore เพื่อไม่ให้ไฟล์ Dependencies ถูก commit เข้าไปใน Repository ของเรา เพราะไฟล์เหล่านี้สามารถถูกติดตั้งใหม่ได้ด้วยคำสั่ง composer install
ไฟล์ composer.lock คืออะไร?
ไฟล์ composer.lock เป็นไฟล์ที่เก็บเวอร์ชันที่แน่นอนของ Dependencies ที่ถูกติดตั้งไว้ในโปรเจกต์ เมื่อเรารัน composer install เป็นครั้งแรก Composer จะสร้างไฟล์ composer.lock ขึ้นมา
ไฟล์ composer.lock มีความสำคัญอย่างมากในการทำให้มั่นใจได้ว่าทุกคนในทีมพัฒนาจะใช้ Dependencies เวอร์ชันเดียวกัน แม้ว่า composer.json จะระบุช่วงของเวอร์ชัน (version range) ที่อนุญาตไว้ก็ตาม
เมื่อเรารัน composer install อีกครั้งในภายหลัง Composer จะตรวจสอบไฟล์ composer.lock ก่อน ถ้าไฟล์ composer.lock มีอยู่ Composer จะติดตั้ง Dependencies ตามเวอร์ชันที่ระบุไว้ในไฟล์นั้น โดยไม่สนใจช่วงของเวอร์ชันที่ระบุไว้ใน composer.json
ถ้าต้องการอัพเดท Dependencies ให้เป็นเวอร์ชันใหม่ เราจะต้องใช้คำสั่ง composer update ซึ่งจะกล่าวถึงในบทต่อไป
ตัวอย่างการใช้งาน
สมมติว่าเรามีไฟล์ composer.json ที่มี Dependencies ดังนี้:
{
"require": {
"monolog/monolog": "2.0.*"
}
}
เมื่อเรารัน composer install Composer จะดาวน์โหลด Monolog เวอร์ชัน 2.x (เช่น 2.9.x) และบันทึกไว้ในโฟลเดอร์ vendor นอกจากนี้ Composer จะสร้างไฟล์ composer.lock ที่ระบุว่า Monolog เวอร์ชัน 2.9.x ถูกติดตั้งไว้
ถ้าเรา commit ไฟล์ composer.json และ composer.lock ไปยัง Repository และเพื่อนร่วมทีมของเราดาวน์โหลดโค้ดมา เพื่อนร่วมทีมของเราสามารถรัน composer install ได้ และ Composer จะติดตั้ง Monolog เวอร์ชัน 2.9.x ตามที่ระบุไว้ในไฟล์ composer.lock แม้ว่าจะมี Monolog เวอร์ชัน 2.10.x ออกมาแล้วก็ตาม
สรุป
composer install เป็นคำสั่งที่สำคัญในการติดตั้ง Dependencies ในโปรเจกต์ PHP โดยจะอ่านไฟล์ composer.json และติดตั้ง Dependencies ที่ระบุไว้ รวมถึง Dependencies ของ Dependencies อีกทอดหนึ่ง นอกจากนี้ composer install ยังสร้างหรืออัพเดทไฟล์ composer.lock ซึ่งเป็นไฟล์ที่เก็บเวอร์ชันที่แน่นอนของ Dependencies ที่ถูกติดตั้ง เพื่อให้มั่นใจได้ว่าทุกคนในทีมพัฒนาจะใช้ Dependencies เวอร์ชันเดียวกัน
ในบทต่อไป เราจะมาเรียนรู้วิธีการอัพเดท Dependencies ด้วยคำสั่ง composer update