Nếu bạn là lập trình viên thì đây là tin tốt cho bạn, đặt biệt là bạn đang làm các dự án thiết kế website, vì Composer 2.0 ra đời đã hỗ trợ nhiều thứ hơn trước, và hiệu suất cũng tăng, tốc độ cài và cả sự an toàn khi sử dụng nữa, hay cũng LPTech tìm hiểu thêm nhé.
Composer 2.0 có gì mới?
Đây là một thay đổi lớn và trong khi Composer cố gắng giữ mọi thứ tương thích với hầu hết người dùng, bạn có thể xem hướng dẫn NÂNG CẤP bên dưới. Có rất nhiều sự thay đổi ở phiên bản Composer 2.0 này được LP Tech liệt kê cụ thể bên dưới.
- Nhiều cải tiến hiệu suất CPU và bộ nhớ
- Lệnh cập nhật giờ đây xác định hơn nhiều vì nó không tính đến các package đã được cài đặt
- Khi tiến hành cài đặt các package, Composer 2.0 sẽ tiến hành thực hiện kiểm tra mạng trước khi thực hiện thay đổi bất kì file nào trong thư mục vendor để hạn chế thấp nhất tình huống đang update giữa chừng mà gặp trục trặc gì thì file vendor đang cài sẽ bị lỗi không sử dụng được, rất khó chịu.
- Việc cập nhật , require/remove hiện nhanh hơn nhiều vì chúng chỉ tải siêu dữ liệu cần thiết cho các package đã cập nhật chứ không chạy lại toàn bộ như ở Composer 1.
- Đã thêm bước kiểm tra nền tảng khi vendor/autoload.php được khởi tạo, bước này sẽ kiểm tra version/extensions PHP hiện tại có tương thích với những gì mong đợi và không thành công. Có thể bị vô hiệu hóa với tùy chọn cấu hình kiểm tra nền tảng
- Đã thêm một lớp Composer\InstalledVersions được tự động tải trong mọi dự án và cho phép bạn kiểm tra packages/versions nào hiện có trong thời gian chạy
- Đã thêm package ảo composer-runtime-api mà bạn có thể yêu cầu (ví dụ: ^ 2.0) để đảm bảo những thứ như lớp InstalledVersions ở trên có sẵn. Nó sẽ buộc người sử dụng Composer 2.x để cài đặt dự án của bạn một cách hiệu quả.
- Đã thêm hỗ trợ tải xuống song song metadata và tệp zip, điều này yêu cầu phải có phần mở rộng curl và do đó chúng tôi thực sự khuyên bạn nên bật curl
- Đã thêm cài đặt song song các package (yêu cầu OSX / Linux / WSL và giải nén đó có trong PATH)
- Đã thêm báo cáo lỗi giải quyết phụ thuộc rõ ràng hơn nhiều cho các trường hợp lỗi phổ biến.
- Đã thêm hỗ trợ cập nhật lên một phiên bản cụ thể với các bản cập nhật một phần, cũng như một - với cờ để vượt qua trong ghi đè hạn chế tạm thời.
- Đã thêm tính năng tự động xóa các package không cần thiết nữa bất cứ khi nào cập nhật được thực hiện, thao tác này sẽ xóa các package trước đó còn sót lại bởi các bản cập nhật một phần và yêu cầu / xóa
- Đã thêm hỗ trợ cho chế độ TTY trên Linux/OSX/WSL để các trình xử lý tập lệnh hiện chạy ở chế độ tương tác
- Chỉ thêm, các tùy chọn loại trừ và chuẩn cho tất cả các kho lưu trữ, hãy xem mức độ ưu tiên của kho lưu trữ để biết chi tiết
- Đã thêm hỗ trợ cho nhiều package lib-* mới trong kho lưu trữ nền tảng và phát hiện phiên bản được cải thiện cho một số package ext- * và lib-*
- Đã thêm sự kiện thực thi trước hoạt động sẽ được kích hoạt trước khi các package được update/require/remove
- Đã thêm sự kiện tạo trước nhóm sẽ được kích hoạt trước khi nhóm package cho trình giải quyết phụ thuộc được tạo, cho phép bạn sửa đổi danh sách các package đi vào
- Đã thêm sự kiện tải xuống sau tệp sẽ được kích hoạt sau khi tải xuống tệp dist package, điều này cho phép bạn kiểm tra thêm các tệp
- Đã thêm cờ --locked để hiển thị lệnh xem các package từ tệp composer.lock
- Đã thêm cờ --unused để loại bỏ lệnh để đảm bảo rằng bất kỳ package nào không cần thiết nữa sẽ được gỡ bỏ
- Đã thêm cờ --dry-run để yêu cầu và xóa lệnh
- Đã thêm cờ --no-install để cập nhật, yêu cầu và loại bỏ các lệnh để tắt bước cài đặt và chỉ thực hiện bước cập nhật (cập nhật tệp composer.lock)
- Đã thêm cờ --ask vào lệnh create-project để tạo lời nhắc Composer cho tên install dir, hữu ích cho các hướng dẫn cài đặt dự án
- Đã thêm hỗ trợ cho nhiều cờ --repository được chuyển vào lệnh create-project, chỉ hữu ích khi kết hợp với --add-repository để duy trì chúng với composer.json
- Đã thêm bí danh cờ --with-dependencies và --with-all-dependencies để yêu cầu và loại bỏ các lệnh để có tính nhất quán với bản cập nhật
- Đã thêm bí danh viết tắt -w cho --with-dependencies và -W cho --with-all-dependencies vào các lệnh cập nhật / yêu cầu / loại bỏ
- Đã thêm thông tin khác vào nhà cung cấp / nhà Composer / install.json, một khóa nhà phát triển lưu trữ xem các yêu cầu của nhà phát triển đã được cài đặt hay chưa và mọi package hiện đều có khóa đường dẫn cài đặt với vị trí cài đặt của nó
- Đã thêm COMPOSER_DISABLE_NETWORK mà nếu được đặt làm cho Composer cố gắng hết sức để chạy ngoại tuyến. Điều này có thể hữu ích khi bạn có kết nối kém hoặc thực hiện đo điểm chuẩn mà không bị chập chờn mạng
- Đã thêm COMPOSER_DEBUG_EVENTS = 1 env var hỗ trợ cho các tác giả plugin để tìm ra sự kiện nào được kích hoạt khi
- Đã thêm setCustomCacheKey vào PreFileDownloadEvent và sửa lỗi bộ nhớ cache cho các tích hợp thay đổi url đã xử lý của kho lưu trữ package
- Đã thêm Trình soạn thảo Composer\Util\SyncHelper cho các tác giả plugin để đối phó với async Promises dễ dàng hơn
- Đã thêm sử dụng lệnh $composer->getLoop()->getHttpDownloader() để có quyền truy cập vào phiên bản HttpDownloader chính trong plugin
- Đã thêm cờ --json và --merge vào lệnh cấu hình để cho phép chỉnh sửa các giá trị extra.* bằng cách sử dụng json làm đầu vào
- Đã thêm lời nhắc xác nhận khi chạy Composer với tư cách superuser ở chế độ tương tác.
- Đã thêm --no-check-version để xác thực lệnh xóa cảnh báo trong trường hợp phiên bản được xác định
- Đã thêm --ignore-platform-req (không có s) vào tất cả các lệnh hỗ trợ --ignore-platform-reqs, chấp nhận tên package để bạn chỉ có thể bỏ qua các yêu cầu nền tảng cụ thể
- Đã thêm hỗ trợ --no-dev để hiển thị và các lệnh lỗi thời để bỏ qua các yêu cầu của dev
- Đã thêm -format=summary vào lệnh cấp phép
- Đã thêm tùy chọn cấu hình chỉ đọc trong bộ nhớ cache để làm cho bộ nhớ cache có thể sử dụng được ở chế độ chỉ đọc cho các vùng chứa và tương tự
- Đã thêm hỗ trợ cho ký tự đại diện (*) trong đường dẫn trình tải tự động bản đồ lớp
- Đã thêm hỗ trợ để định cấu hình mã thông báo triển khai GitLab ngoài mã thông báo riêng tư, xem gitlab-token
- Đã thêm hỗ trợ đoán phiên bản package cho lệnh require và init để tính đến tất cả các package nền tảng, không chỉ phiên bản php
- Đã thêm hỗ trợ cho tar trong kho tạo tác
- Đã thêm non-zero exit code (2) và warning xóa lệnh khi không thể gỡ bỏ package cần gỡ
- Đã thêm cờ --apcu-autoloader-prefix (hoặc --apcu-prefix cho lệnh dump-autoload) để cho phép mọi người sử dụng tự động tải apcu theo cách đầu ra xác định nếu điều đó là cần thiết
- Cố định thứ tự package khi tự động tải và đặc biệt là khi tải plugin, để đảm bảo các phần phụ thuộc được tải trước phần phụ thuộc của chúng
- Đã sửa lỗi đầu ra đề suất rất spam, hiện chỉ dài một dòng và hiếm khi hiển thị hơn
- Đã sửa các quy tắc xung đột như v.d. >=5 từ phù hợp với dev-master, vì nó không được chuẩn hóa thành 9999999-dev trong nội bộ nữa
- Đã sửa lỗi bộ giải dẫn đến vòng lặp vô tận trong một số trường hợp.
- Nhiều bản sửa lỗi và cải tiến nhỏ.
Nhiều cập nhật quá, viết hoài không hết, nhưng với các cập nhật trên cơ bản là đã quá có lợi cho người làm lập trình, thiết kế web rồi.
Cải tiến hiệu suất
Composer 2.p đã đại tu khá nhiều thứ từ giao thức được sử dụng giữa Composer và packagist.org, bao gồm cả việc tải xuống tệp song song bằng cách sử dụng tối ưu hóa đánh giá giới hạn và curl. Điều này dẫn đến những cải tiến lớn về cả tốc độ và việc sử dụng bộ nhớ.
Sự khác biệt phụ thuộc vào trường hợp sử dụng của bạn, vì vậy mặc dù tôi đã thấy các báo cáo về sự cải thiện hơn 50% cho cả hai trong một số dự án, nhưng tôi không thể đưa ra con số chính xác về nó. Nhưng tôi chắc chắn rằng bạn sẽ ngạc nhiên tích cực nếu bạn chưa thử Composer 2.0
Thay đổi kiến trúc
Cách thức cập nhật phụ thuộc được thực hiện nội bộ đã được cấu trúc lại, đối với bạn sẽ dẫn đến các cập nhật chính xác hơn. Trạng thái cục bộ hiện tại của thư mục nhà cung cấp sẽ không can thiệp vào các bản cập nhật nữa.
Sau khi cập nhật xong, quá trình cài đặt sẽ tự động chạy và bây giờ nó sẽ thực hiện tất cả các hoạt động liên kết mạng trước tiên - và song song nếu có thể. Điều này sẽ tránh để lại cho bạn một thư mục nhà cung cấp được cập nhật một nửa nếu lỗi mạng xảy ra giữa chừng khi cài đặt. Xem ở mục 3 bên trên có đề cập đến nhé.
Cài Composer mới
Các bạn vẫn có thể sử dụng Composer 2.0 trực tiếp khi cài mới bằng lệnh sau:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === 'c31c1e292ad7be5f49291169c0ac8f683499edddcfd4e42232982d0fd193004208a58ff6f353fde0012d35fdd72bc394') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
Hướng dẫn nâng cấp từ Composer 1.x lên Composer 2.0
Mục tiêu của Composer là mọi người dùng Composer đều có thể nâng cấp suôn sẻ và nhanh chóng. Lợi nhuận thu được là rất lớn và Composer muốn mọi người đều được hưởng lợi từ chúng. Để đạt được điều đó, Composer đã làm một số điều:
- Composer 2.0 vẫn hỗ trợ PHP 5.3 trở lên, giống như Composer 1.x
- Các tệp composer.lock có thể tương tác giữa các phiên bản, vì vậy bạn có thể nâng cấp lên 2.0 và quay lại dễ dàng nếu cần.
- Hầu hết các lệnh và đối số vẫn giống nhau, và phần lớn những gì bạn biết về Composer vẫn đúng trong 2.0.
Nếu bạn chạy lệnh composer self-update của Composer từ 1.x, nó sẽ cảnh báo bạn rằng đã có phiên bản Composer chính ổn định mới và bạn có thể sử dụng composer self-update --2 là xong.
Để nâng cấp lên bạn chỉ cần chạy lệnh:
composer self-update --preview
composer self-update
Hạ cấp từ Composer 2.0 về lại Composer 1.x
Bạn có thể sử dụng lệnh mà Composer đã cung cấp cho việc Downgrade này như sau:
composer self-update --rollback
Chúc các bạn có thể trải nghiệm nhiều hơn với Composer 2.0 nhé, nếu có gì hay hãy cùng chia sẻ với LPTech bằng cách bình luận bên dưới nhé.
Thông tin liên hệ
Nếu bạn có thắc mắc gì, có thể gửi yêu cầu cho chúng tôi, và chúng tôi sẽ liên lạc lại với bạn sớm nhất có thể .
Công ty TNHH TMĐT Công nghệ LP
Giấy phép kinh doanh số 0315561312/GP bởi Sở Kế Hoạch và Đầu Tư TP. Hồ Chí Minh.
Văn phòng: Lầu 4, Toà nhà Lê Trí, 164 Phan Văn Trị, Phường 12,Quận Bình Thạnh, HCMC
Hotline: 0338 586 864
Mail: sales@lptech.asia
Zalo OA:LP Tech Zalo Official
Zalo Sales:033 85 86 86 64 (Sales)