Tệp composer.json là tệp cấu hình chính của Composer, quản lý các phụ thuộc và thiết lập tự động nạp lớp (autoloading) cho dự án PHP của bạn. Dưới đây là mô tả chi tiết về các thành phần chính trong tệp composer.json:
1. NAME
- Mô tả: Tên của gói hoặc dự án.
- Ví dụ:
"name": "vendor/package-name"
2. DESCRIPTION
- Mô tả: Mô tả ngắn gọn về dự án hoặc gói.
- Ví dụ:
"name": "vendor/package-name"
3. VERSION
- Mô tả: Phiên bản của gói hoặc dự án (không bắt buộc nếu bạn sử dụng hệ thống kiểm soát phiên bản như Git).
- Ví dụ:
"version": "1.0.0"
4. TYPE
- Mô tả: Loại của gói (ví dụ: library, project, composer-plugin).
- Ví dụ:
"type": "library"
5. LICENSE
- Mô tả: Giấy phép cho gói hoặc dự án (ví dụ: MIT, GPL-3.0-or-later).
- Ví dụ:
"license": "MIT"
6. REQUIRE
- Mô tả: Danh sách các phụ thuộc mà dự án cần thiết để hoạt động.
- Ví dụ:
"require": { "php": "^7.4 || ^8.0", "monolog/monolog": "^2.0" }
7. REQUIRE-DEV
- Mô tả: Danh sách các phụ thuộc chỉ cần thiết cho môi trường phát triển (không cần thiết khi triển khai).
- Ví dụ:
"require-dev": { "phpunit/phpunit": "^9.5" }
8. AUTOLOAD
- Mô tả: Cấu hình tự động nạp lớp cho dự án.
- Ví dụ:
"autoload": { "psr-4": { "App\\": "src/" }}
9. AUTOLOAD-DEV
- Mô tả: Cấu hình tự động nạp lớp cho môi trường phát triển.
- Ví dụ:
"autoload-dev": { "psr-4": { "Tests\\": "tests/" }}
10. SCRIPTS
- Mô tả: Định nghĩa các tập lệnh mà Composer có thể thực thi trong các sự kiện khác nhau (ví dụ: khi cài đặt hoặc cập nhật).
- Ví dụ:
"scripts": { "post-install-cmd": ["php artisan clear-compiled", "php artisan optimize"], "test": "phpunit" }
11. REPOSITORIES
- Mô tả: Định nghĩa các kho lưu trữ khác ngoài Packagist.
- Ví dụ:
"repositories": [{ "type": "vcs", "url": "https://github.com/vendor/package-name" }]
12. CONFIG
- Mô tả: Cấu hình thêm cho Composer, như thiết lập trình cài đặt, thư mục cài đặt, hoặc các tùy chọn cài đặt khác.
- Ví dụ:
"config": { "optimize-autoloader": true, "sort-packages": true, "platform": { "php": "7.4.3" }}
13. EXTRA
- Mô tả: Trường tùy chọn cho các dữ liệu hoặc cấu hình bổ sung, tùy thuộc vào từng dự án cụ thể.
- Ví dụ:
"extra": { "branch-alias": { "dev-master": "1.0-dev" }}
14. MINIMUM-STABILITY
- Mô tả: Định nghĩa mức độ ổn định tối thiểu cho các gói mà Composer có thể cài đặt (ví dụ: stable, beta, alpha, dev).
- Ví dụ:
"minimum-stability": "dev"
15. PREFER-STABLE
- Mô tả: Chỉ định rằng các phiên bản ổn định nên được ưu tiên hơn khi có sẵn, ngay cả khi mức độ ổn định tối thiểu thấp hơn.
- Ví dụ:
"prefer-stable": true
16. SCRIPTS-DESCRIPTIONS
- Mô tả: Cung cấp mô tả cho các script được định nghĩa trong scripts.
- Ví dụ:
"scripts-descriptions": { "test": "Run the test suite." }
17. REPLACE
- Mô tả: Cho phép thay thế một gói khác bằng gói hiện tại, hữu ích khi bạn có một phiên bản khác hoặc một fork của gói.
- Ví dụ:
"replace": { "vendor/package-name": "self.version" }
18. PROVIDE
- Mô tả: Chỉ định rằng gói này cung cấp một gói khác (thường dùng cho các trường hợp thay thế).
- Ví dụ:
"provide": { "vendor/other-package": "1.0.0" }
19. CONFLICT
- Mô tả: Xác định các gói mà gói hiện tại không tương thích với chúng.
- Ví dụ:
"conflict": { "vendor/conflicting-package": "<1.0" }
20. SUGGEST
- Mô tả: Đề xuất các gói khác mà người dùng có thể muốn cài đặt để tăng thêm tính năng cho gói này.
- Ví dụ:
"suggest": { "ext-gd": "to enable image processing", "ext-json": "to handle JSON data" }
21. AUTHORS
- Mô tả: Danh sách tác giả của dự án.
- Ví dụ:
"authors": [{ "name": "John Doe", "email": "john@example.com", "homepage": "http://example.com", "role": "Developer" }]
22. SUPPORT
- Mô tả: Cung cấp thông tin hỗ trợ như URL, email, hoặc các tài liệu liên quan.
- Ví dụ:
"support": { "email": "support@example.com", "issues": "https://github.com/vendor/package/issues" }
23. BIN
- Mô tả: Chỉ định các tệp thực thi (scripts) mà gói này cung cấp.
- Ví dụ:
"bin": ["bin/console"]
24. KEYWORDS
- Mô tả: Danh sách các từ khóa giúp mô tả gói, giúp nó dễ tìm thấy hơn trên Packagist.
- Ví dụ:
"keywords": ["framework", "laravel", "web"]
Kết luận
Các thành phần trong tệp composer.json cho phép bạn cấu hình và quản lý dự án PHP một cách toàn diện, từ việc quản lý phụ thuộc, tự động nạp lớp, đến việc tích hợp với các hệ thống quản lý phiên bản và thiết lập môi trường phát triển. Hiểu và sử dụng các thành phần này đúng cách giúp bạn tối ưu hóa quy trình phát triển và triển khai ứng dụng.
Tags:
composer