Composer là gì? Tại sao phải sử dụng Composer trong Project

Composer là gì?

Composer là một công cụ dùng để quản lý các Package trong project. Nó cho phép khai báo, install, update hay remove một hoặc nhiều package trong project của bạn.

Cơ chế hoạt động của Composer cũng không phải là mới, chúng ta đã bắt gặp concept này ở NPM của NodeJs hay Bundle của Ruby language.

Dependency management

Composer không quản lý các Packgage giống như yum trong Centos hay apt trong Ubuntu. Nó quản lý các Packages theo từng Project cụ thể và không hỗ trợ phạm vi cài đặt global. Tất cả các Package đều được cài đặt vào thư mục vendor của project , chúng ta có thể xóa bất kỳ Package nào của project thông qua Composer

Các lệnh cơ bản trong Composer

Để sử dụng Composer các bạn phải cài nó trên máy của mình. Có thể cài độc lập bằng cách tải file trên trang chủ của Composer về và cài như thông thường . Bên canh đó cũng có một các khác là bạn có thể sử dụng Laragon vì trong Laragon đã tích hợp sẵn Composer rồi

Để kiểm tra composer đã được cài trên máy của bạn hay chưa, các bạn chạy lệnh sau 

composer

Sau khi cài đặt thành công các bạn có thể bắt đầu tìm hiểu những câu lệnh cơ bản trong Laragon dưới đây

Composer Init

Đây là lệnh khởi tạo composer cho project của bạn, khi chạy lệnh này nó sẽ hỏi bạn nhập một số options như sau

--name: Tên của package.

--description: Mô tả về package.

--author: Tên tác giả

--type: Kiểu của Package.

--homepage: Link home page của Package

--require: Package và version bắt buộc

--require-dev: Package dành cho môi trường dev

--repository: Link package trực tiếp từ Github repository

Composer install

Lệnh này sẽ đọc tất cả các package config trong file composer,json và cài chúng vào thư mục vender

composer install 

Chúng ta thường sử dụng lệnh này cho lần đầu init project hoặc khi có package mới được insert vào file composer.json

Composer update

Để update lên version mới nhất của các package đã `install` trong vendor chúng ta sẽ sử dụng lệnh

composer update

Tất cả những package trong project được update lên version mới sẽ được ghi lại vào trong file composer.lock. Sau này cài lại project nó sẽ lấy bản mới nhất này 

Trường hợp không muốn update tất cả các package của project chúng ta có thể chỉ định package name cần update

php composer.phar update vendor/package1  vendor/package2

Bạn cũng có thể sử dụng cú pháp dưới đây để update lần lượt từng package trong thư mục vendor

php composer.phar update "vendor/*"

Để rollback lại về version thấp hơn cho một package chúng ta sử dụng command này 

php composer.phar update --with vendor/package:2.0.1

The custom constraint has to be a subset of the existing constraint you have, and this feature is only available for your root package dependencies.

If you only want to update the package(s) for which you provide custom constraints using --with, you can skip --with and just use constraints with the partial update syntax:

php composer.phar update vendor/package:2.0.1 vendor/package2:3.0.*

--prefer-source: Install packages from source when available.

--prefer-dist: Install packages from dist when available.

--dry-run: Simulate the command without actually doing anything.

--dev: Install packages listed in require-dev (this is the default behavior).

--no-dev: Skip installing packages listed in require-dev. The autoloader generation skips the autoload-dev rules.

--no-install: Does not run the install step after updating the composer.lock file.

--lock: Only updates the lock file hash to suppress warning about the lock file being out of date.

--with: Temporary version constraint to add, e.g. foo/bar:1.0.0 or foo/bar=1.0.0

--no-autoloader: Skips autoloader generation.

--no-scripts: Skips execution of scripts defined in composer.json.

--no-progress: Removes the progress display that can mess with some terminals or scripts which don't handle backspace characters.

--with-dependencies (-w): Update also dependencies of packages in the argument list, except those which are root requirements.

--with-all-dependencies (-W): Update also dependencies of packages in the argument list, including those which are root requirements.

--optimize-autoloader (-o): Convert PSR-0/4 autoloading to classmap to get a faster autoloader. This is recommended especially for production, but can take a bit of time to run, so it is currently not done by default.

--classmap-authoritative (-a): Autoload classes from the classmap only. Implicitly enables --optimize-autoloader.

--apcu-autoloader: Use APCu to cache found/not-found classes.

--apcu-autoloader-prefix: Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader.

--ignore-platform-reqs: ignore all platform requirements (php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill these. See also the platform config option.

--ignore-platform-req: ignore a specific platform requirement(php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill it.

--prefer-stable: Prefer stable versions of dependencies.

--prefer-lowest: Prefer lowest versions of dependencies. Useful for testing minimal versions of requirements, generally used with --prefer-stable.

--interactive: Interactive interface with autocompletion to select the packages to update.

--root-reqs: Restricts the update to your first degree dependencies.

Composer require

Khi bạn muốn install một package mới cho project của mình, bạn sẽ sử dụng command sau

php composer.phar require packageName

Đây là các options khi install package

--dev: Add packages to require-dev.

--dry-run: Simulate the command without actually doing anything.

--prefer-source: Install packages from source when available.

--prefer-dist: Install packages from dist when available.

--no-progress: Removes the progress display that can mess with some terminals or scripts which don't handle backspace characters.

--no-update: Disables the automatic update of the dependencies (implies --no-install).

--no-install: Does not run the install step after updating the composer.lock file.

--no-scripts: Skips execution of scripts defined in composer.json

--update-no-dev: Run the dependency update with the --no-dev option.

--update-with-dependencies (-w): Also update dependencies of the newly required packages, except those that are root requirements.

--update-with-all-dependencies (-W): Also update dependencies of the newly required packages, including those that are root requirements.

--ignore-platform-reqs: ignore all platform requirements (php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill these. See also the platform config option.

--ignore-platform-req: ignore a specific platform requirement(php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill it.

--prefer-stable: Prefer stable versions of dependencies.

--prefer-lowest: Prefer lowest versions of dependencies. Useful for testing minimal versions of requirements, generally used with --prefer-stable.

--sort-packages: Keep packages sorted in composer.json.

--optimize-autoloader (-o): Convert PSR-0/4 autoloading to classmap to get a faster autoloader. This is recommended especially for production, but can take a bit of time to run, so it is currently not done by default.

--classmap-authoritative (-a): Autoload classes from the classmap only. Implicitly enables --optimize-autoloader.

--apcu-autoloader: Use APCu to cache found/not-found classes.

--apcu-autoloader-prefix: Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader.

Composer remove

Để xóa package khỏi project ta sử dụng command sau:

php composer.phar remove vendor/package vendor/package2

Sau khi xóa nó cũng xóa package name ở trong composer.lock file

Options:

--dev: Remove packages from require-dev.

--dry-run: Simulate the command without actually doing anything.

--no-progress: Removes the progress display that can mess with some terminals or scripts which don't handle backspace characters.

--no-update: Disables the automatic update of the dependencies (implies --no-install).

--no-install: Does not run the install step after updating the composer.lock file.

--no-scripts: Skips execution of scripts defined in composer.json.

--update-no-dev: Run the dependency update with the --no-dev option.

--update-with-dependencies (-w): Also update dependencies of the removed packages. (Deprecrated, is now default behavior)

--update-with-all-dependencies (-W): Allows all inherited dependencies to be updated, including those that are root requirements.

--ignore-platform-reqs: ignore all platform requirements (php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill these. See also the platform config option.

--ignore-platform-req: ignore a specific platform requirement(php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill it.

--optimize-autoloader (-o): Convert PSR-0/4 autoloading to classmap to get a faster autoloader. This is recommended especially for production, but can take a bit of time to run so it is currently not done by default.

--classmap-authoritative (-a): Autoload classes from the classmap only. Implicitly enables --optimize-autoloader.

--apcu-autoloader: Use APCu to cache found/not-found classes.

--apcu-autoloader-prefix: Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader

Composer dump-autoload

Nếu bạn cần update autoloader cho một class mới trong classmap package bạn có thể xử dụng

composer dump-autoload


Khôi Phạm
Khôi Phạm

Share is way to learn

SUNTECH VIỆT NAM   Đăng ký để nhận thông báo mới nhất