Nhảy đến nội dung

[Thủ Thuật Drupal] Quản Lý dự án Drupal với Composer

Nội Dung Bài Viết

Drupal có thể cài đặt và quản lý bởi composer, với cách này bạn có thể dễ dàng phát triển và cập nhập core mà không gặp phải những lỗi version không tương thích giữa các module và core drupal.

Composer là gì?

Composer là một công cụ để quản lý dependency trong PHP. Nó cho phép bạn khai báo các thư viện mà dự án của bạn cần và nó sẽ quản lý (cài đặt/cập nhật) chúng cho bạn.

Các thuật ngữ cơ bản Composer sử dụng trong quản lý Drupal

Chúng ta sẽ thảo luận về Composer. Có những thuật ngữ cơ bản cần phải biết khi sử dụng composer

  • composer.json: chứa thông tin dữ liệu về project và các phụ thuộc (dependencies) của project.
  • composer.lock: tệp dữ liệu chứa thông tin được tính toán về các phần phụ thuộc và trạng thái cài đặt dự kiến.
  • composer install: tải xuống và cài đặt các phần phụ thuộc, đồng thời xây dựng trình tải tự động của class. Nếu có tệp .lock, nó sẽ cài đặt dựa trên siêu dữ liệu. Nếu không, nó sẽ tính toán và giải quyết thông tin tải xuống cho các phần phụ thuộc.
  • composer update: cập nhật các phần phụ thuộc đã xác định và xây dựng lại tệp lock.
  • composer request: thêm một phần phụ thuộc mới, cập nhật tệp JSON và .lock.
  • composer remove: loại bỏ phần phụ thuộc, cập nhật tệp JSON và .lock.

Note: Tất cả các lệnh của Composer cần phải chạy trong cùng một thư mục với tệp composer.json của bạn.

Cài đặt Drupal

Có nhiều cách để cài đặt drupal, nhưng trong phạm trù bài viết này sẽ hướng dẫn dùng composer.

Để bắt đầu cài đặt Drupal composer, ta có bắt đầu sử dụng create-project command:

# Drupal 9
composer create-project drupal/recommended-project name_dir

# Drupal 8
composer create-project drupal-composer/drupal-project:8.x-dev some-dir --stability dev --no-interaction

# Drupal 7
composer create-project drupal-composer/drupal-project:7.x-dev -n name_dir

Ở đây chúng ta đã tạo thư mục some-dir chứa thư mục vendor và thư mục web. Thư mục Web chính là thư mục root.

Cài đặt module Drupal

Để cài đặt các dependencies của project drupal bạn dùng composer require.

composer require drupal/<modulename>

Ví dụ, để cài đặt module Panels, ta dùng lệnh

composer require drupal/panels

Sau khi lệnh chạy, bạn sẽ thấy file composer.json sẽ xuất hiện dòng

"require": {
  "drupal/panels": "3.0-beta4",
}

Quan trọng ở đây là sự thể hiện được phiên bản module mình đang sử dụng trong project. Xem ví dụ dưới để hiểu hơn: 

  • 3.0 sẽ được coi là một phiên bản cụ thể và không bao giờ cập nhật.
  • ~3.0 sẽ coi bất kỳ phiên bản vá lỗi nào là một tùy chọn cài đặt khả thi, chẳng hạn như các bản beta mới, RCs.
  • ~3 sẽ cho phép mọi bản phát hành nhỏ được xem xét để cài đặt hoặc cập nhật.
  • ^3.0 sẽ khớp với bất kỳ thứ gì trong bản phát hành chính - cho phép bất kỳ bản phát hành nhỏ hoặc bản vá nào.

Bạn cũng có thể cài đặt một module cụ thể như 

composer require drupal/panels:~3.0

Update module Drupal

Để update module drupal, bạn sử dụng 

composer update drupal/panels --with-dependencies

Đây là lệnh composer update module panels kèm theo các phụ thuộc của nó. Việc sử dụng  --with-dependencies sẽ giúp cho việc update module tránh bị lỗi không đáng có giữa phiên bản mới và các phụ thuộc của nó.

Update Drupal core

Để update Drupal core dễ dàng mà không lo lỗi, bạn dùng lệnh

composer update drupal/core --with-dependencies

Để update Drupal core-recommended bạn dùng lệnh sau

composer update drupal/core "drupal/core-*" --with-all-dependencies

drupal/core-recommended và drupal/core

Điểm khác biệt giữa hai core này là  drupal/core-recommended đã được thử nghiệm và duy trì tất cả các phần phụ thuộc cốt lõi ở một phiên bản cố định để có độ ổn định tối đa.

Còn Drupal / core rất hữu ích khi bạn muốn sử dụng phiên bản mới nhất của các phụ thuộc và quan tâm đến việc kiểm tra xem chúng có hoạt động tốt hay không. 

Để check bạn đang sử dụng drupal/core-recommended hay drupal/core được installed thì dùng lệnh

composer show drupal/core-recommended

// Hoặc
composer show drupal/core

Nếu dùng drupal/core-recommended thì sử dụng 

--with-all-dependencies

thay vì 

--with-dependencies