- vừa được xem lúc

Composer: Khá Nhiều Dev PHP Dùng Install/Update Sai - Bạn Có Nằm Trong Số Đó?

0 0 3

Người đăng: Lê Phú Hưng

Theo Viblo Asia

Chào các đồng dev PHP!

Có bao giờ bạn tự hỏi: "Sao cứ phải chạy composer install hoài vậy? Khác gì composer update?". Bài viết này mình sẽ giải thích bằng ví dụ siêu thực tế mà bất kỳ ai code PHP đều gặp phải!

1. Bộ đôi "thần thánh" composer.json vs composer.lock

💡 Tưởng tượng:

  • composer.jsonDanh sách mua sắm (Ghi chung chung: "cần mua bàn chải đánh răng") .
  • composer.lockHóa đơn chi tiết (Ghi rõ: "Bàn chải P/S model X2025, giá 25k tại Coopmart")

2. composer install - "Xây nhà theo bản vẽ"

Khi nào dùng?

  • Khi bạn clone project từ Git về máy
  • Khi deploy lên server production
  • Khi đồng nghiệp nói "Ê, chạy composer đi, tui vừa thêm package"
# Cách chạy "chuẩn chỉnh" 
rm -rf vendor/ composer install --no-dev --ignore-platform-reqs 

⚠️ Lưu ý vàng:

  • Luôn xóa folder vendor cũ trước khi install
  • Flag --no-dev → Bỏ qua packages dùng cho môi trường dev

💡 Điều ít người biết:

  • Nếu không có file composer.lock, composer sẽ dùng composer.json và tạo ra file lock mới
  • Khi thêm package mới vào composer.json rồi chạy composer install, Composer sẽ:
    • Giữ nguyên các package đã có trong lock file
    • Chỉ thêm và cài đặt package mới
    • Cập nhật file lock để bao gồm package mới

3. composer update - "Đi siêu thị mua đồ mới"

Dùng khi:

  • Bạn muốn nâng cấp version package
  • File lock bị conflict sau khi merge code
  • Cần thêm tính năng mới từ package
# Update 1 package cụ thể (an toàn nhất) 
composer update laravel/framework --with-dependencies 

🧨 Cảnh báo đỏ:

  • Không bao giờ chạy composer update trên production
  • Luôn test kỹ trước khi commit file lock mới

4. Bảng so sánh "nhìn là nhớ"

Hoạt động Install Update
Tốc độ ⚡ Nhanh (vì đã biết version) 🐢 Chậm hơn (phải tính toán)
Mục đích Khôi phục dependencies Thay đổi dependencies
Thay đổi lock Không (nếu đã tồn tại) Luôn thay đổi
Dùng khi 90% thời gian 10% khi cần update package
Đọc từ đâu composer.lock (ưu tiên) composer.json (luôn luôn)
Thêm package mới Chỉ thêm package mới vào lock Cập nhật toàn bộ lock file

5. Case study thực tế

Tình huống:

  • Trên local: Laravel 9.2.0 (lock file)
  • Trên production: Laravel 9.1.0 (lock file cũ)

Cách fix:

  1. Trên local → composer update laravel/framework
  2. Test kỹ → commit cả json và lock
  3. Trên production → composer install

6. Best practices "đỉnh cao"

  • 🚫 Đừng bao giờ sửa tay file lock
  • Luôn commit cả 2 file json và lock
  • 🔄 Dùng composer require thay vì sửa json thủ công
    • Nhanh hơn việc sửa json rồi chạy install
    • Tự động cập nhật cả json và lock file
  • 📅 Mỗi tháng 1 lần: Update minor version package

Kết luận

Hiểu đúng cách Composer hoạt động giúp bạn:

  • 🕒 Tiết kiệm 3 tiếng debug mỗi tuần
  • 💣 Tránh 20+ lỗi dependency phổ biến
  • 👨‍💻 Trở thành "cao thủ" trong mắt đồng nghiệp

Còn bạn? Từ nay mỗi lần chạy composer sẽ là hành động có ý thức chứ không phải "thánh chỉ" mù quáng nữa 😉

👇 Comment ngay câu hỏi nếu bạn gặp tình huống oái oăm với Composer!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Làm thế nào để tạo composer package và cài đặt chúng vào dự án như thế nào.

Làm thế nào để tạo composer package cho php. Đặt vấn đề.

0 0 149

- vừa được xem lúc

Tăng tốc Composer installs khi build Docker

Khi build một Docker image, chắc hẳn không ít lần chúng ta phải ngao ngán vì thời gian cài đặt các thư viện. Một trong số đó có thể kể đến là cài đặt các package PHP thông qua Composer. 1. Sử dụng thư viện Prestissimo.

0 0 32

- vừa được xem lúc

Cách sử dụng Composer, Laravel Mix với Wordpress

MÌnh code Laravel cũng khá lâu nên cũng quen với cách tổ chức code PHP theo dạng OOP, Namespace, autoload theo chuẩn PSR-4 và cài cắm thêm nhiều các packages/library qua Composer. Và mình cũng áp dụng

0 0 42

- vừa được xem lúc

Hiểu thêm về composer install

Vào một ngày đẹp trời, bạn tiến hành deploy hệ thống đang sử dụng framework Laravel lên server và phải mất vài phút để composer tải về tất cả những package bạn đã cài đặt vào project của mình, bạn ngh

0 0 36

- vừa được xem lúc

Hiểu thêm về composer install(P2)

Trong bài viết lần trước, chúng ta đã tìm hiểu về require và require-dev cũng như cách cài đặt một package hợp lí trong các môi trường khác nhau. Hôm nay ta tiếp tục đào sâu thêm một chút về một số ki

0 0 23

- vừa được xem lúc

Tìm hiểu về Livewire trong Laravel

Giới Thiệu. Livewire là một full-stack framework cho Laravel giúp việc xây dựng các giao diện động trở nên đơn giản hơn.

0 1 231