Composer 2.0: Phiên bản release mới nhất và cách nâng cấp composer

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. 

  1. Nhiều cải tiến hiệu suất CPU và bộ nhớ
  2. 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
  3. 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.
  4. 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.
  5. Đã 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
  6. Đã 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
  7. Đã 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ả.
  8. Đã 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
  9. Đã 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)
  10. Đã 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.
  11. Đã 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.
  12. Đã 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
  13. Đã 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
  14. 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
  15. Đã 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-*
  16. Đã 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
  17. Đã 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
  18. Đã 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
  19. Đã thêm cờ --locked để hiển thị lệnh xem các package từ tệp composer.lock
  20. Đã 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ỏ
  21. Đã thêm cờ --dry-run để yêu cầu và xóa lệnh
  22. Đã 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)
  23. Đã 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
  24. Đã 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
  25. Đã thêm bí danh cờ --with-dependencies--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
  26. Đã thêm bí danh viết tắt -w cho --with-dependencies-W cho --with-all-dependencies vào các lệnh cập nhật / yêu cầu / loại bỏ
  27. Đã 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ó
  28. Đã 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
  29. Đã 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
  30. Đã 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
  31. Đã 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
  32. Đã 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
  33. Đã thêm cờ --json--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
  34. Đã 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.
  35. Đã 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
  36. Đã 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ể
  37. Đã 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
  38. Đã thêm -format=summary vào lệnh cấp phép
  39. Đã 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ự
  40. Đã thêm hỗ trợ cho ký tự đại diện (*) trong đường dẫn trình tải tự động bản đồ lớp
  41. Đã 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
  42. Đã thêm hỗ trợ đoán phiên bản package cho lệnh requireinit để tính đến tất cả các package nền tảng, không chỉ phiên bản php
  43. Đã thêm hỗ trợ cho tar trong kho tạo tác
  44. Đã thêm non-zero exit code (2)warning xóa lệnh khi không thể gỡ bỏ package cần gỡ
  45. Đã 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
  46. 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
  47. Đã 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
  48. Đã 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
  49. Đã 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.
  50. 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 Composerpackagist.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:

  1. Composer 2.0 vẫn hỗ trợ PHP 5.3 trở lên, giống như Composer 1.x
  2. 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.
  3. 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:LP Tech Zalo Official

Liên hệ qua Zalo: 0338586864 ( hoặc bấm vào link này: http://lptech.asia/zalo-lptech). Hoặc nhập thông tin mà bạn cần hỗ trợ vào ô liên hệ bên dưới để lên lạc với LPTech nhé.

Bài viết cùng chuyên mục

Design Pattern là gì? Các loại Design Pattern...

Design Pattern là gì? Đây là những mẫu thiết kế giúp tổ chức mã nguồn, tăng tính linh hoạt và dễ dàng bảo trì hệ thống.

Authorization là gì? Các loại Authorization phổ biến

Authorization là gì? Đây là quá trình xác định quyền truy cập của người dùng vào tài nguyên trong hệ thống bất kỳ để đảm bảo tính bảo mật.

Array là gì? Tổng hợp 15 phương thức của Array...

Array là gì trong JavaScript? Đây là câu hỏi phổ biến khi làm quen với lập trình. Mảng (array) giúp lưu trữ và quản lý nhiều giá trị...

Kỹ sư cầu nối (BrSE) là gì? Công việc và mức...

Kỹ sư cầu nối (BrSE) là một ví trí quan trọng trong lĩnh vực công nghệ thông tin, giúp kết nối khách hàng với các dev trong team và phát...

Convolutional Neural Network là gì? Tìm hiểu về...

Convolutional Neural Network là một công cụ quan trọng được sử dụng trong nhiều lĩnh vực của đời sống. Để tìm hiểu chi tiết về CNN, bạn...

Props là gì? Bí quyết sử dụng Props sao cho hợp...

Props là gì? Đây là một khái niệm quan trọng trong React giúp truyền tải dữ liệu giữa các component. Cùng tìm hiểu chi tiết cách sử dụng...

Bài viết mới nhất


Cần Giờ - Thạnh An: Rong chơi những ngày cuối năm

Một chuyến đi ngẫu hứng vào những ngày cuối năm của các thành viên, rời xa thành phố để đến với Cần Giờ và Đảo Thạnh An.

Design Pattern là gì? Các loại Design Pattern...

Design Pattern là gì? Đây là những mẫu thiết kế giúp tổ chức mã nguồn, tăng tính linh hoạt và dễ dàng bảo trì hệ thống.

Outsourcing là gì? Sự khác nhau giữa Product và...

Outsourcing, Outsource là hình thức làm việc sử dụng dịch vụ thuê ngoài để giúp doanh nghiệp hoàn thành nhiệm vụ. Xem bài viết để tìm hiểu chi tiết...

Authorization là gì? Các loại Authorization phổ...

Authorization là gì? Đây là quá trình xác định quyền truy cập của người dùng vào tài nguyên trong hệ thống bất kỳ để đảm bảo tính bảo mật.

Authentication là gì? 7 phương pháp...

Authentication là gì? Đóng vai trò gì trong bảo mật và phát triển phần mềm. Tìm hiểu khái niệm về authentication và các phương pháp xác thực phổ...

Array là gì? Tổng hợp 15 phương thức của Array...

Array là gì trong JavaScript? Đây là câu hỏi phổ biến khi làm quen với lập trình. Mảng (array) giúp lưu trữ và quản lý nhiều giá trị trong một biến...

SaaS là gì? Tổng quan về mô hình Software as a...

SaaS là mô hình dịch vụ phần mềm dựa trên cloud, cho phép người dùng truy cập các ứng dụng trực tiếp qua internet mà không cần cài đặt phức tạp....

AWS là gì? Tất tần tật chứng chỉ AWS 'đẻ vàng'...

AWS là nền tảng điện toán đám mây hàng đầu thế giới, cung cấp hơn 200 dịch vụ tiên tiến, từ lưu trữ dữ liệu đến trí tuệ nhân tạo. Tìm hiểu ngay...

Google Search Console cải tiến thời gian xem...

Ngày 12 tháng 12 Google Search Console cập nhật chế độ xem 24 giờ cho các báo cáo hiệu suất giúp cải thiện độ mới dữ liệu hơn so với chế độ xem cũ

Cách thức và lý do thu thập dữ liệu của Googlebot

Thu thập dữ liệu (Crawling) là gì? Cách thức thu thập dữ liệu của Googlebot trên trang như thế nào? Làm cách nào để tối ưu ngân sách dữ liệu thu thập?