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

NodeJS là gì? Tổng hợp kiến thức cơ bản về Node.JS

Node JS là nền tảng phát triển dựa trên V8 Javascript engine của Chrome. Nó là nền tảng có thể mở rộng và được dùng để phát triển thêm...

Mạng máy tính là gì? Thành phần và lợi ích của...

Mạng máy tính là gì? Đây là hệ thống hoạt động bằng cách kết nối nhiều thiết bị máy tính lại với nhau để trao đổi và chia sẻ dữ liệu, tài...

SQL Server là gì? Hướng dẫn cách tải và cài đặt...

SQL (Structured Query Language) server được thiết kế để quản lý cơ sở dữ liệu quan hệ. SQL server cung cấp cho người dùng các tính năng...

Cloudflare là gì? Nên dùng Cloudflare cho website...

Cloudflare là một DNS trung gian, được thiết kế để điều phối lưu lượng truy cập bằng lớp bảo vệ của Cloudflare. Cloudflare nằm giữa kết...

Stackoverflow là gì? Tại sao lập trình viên không...

Stackoverflow là nền tảng trao đổi kiến thức và giải đáp thắc mắc dành cho các lập trình viên trên toàn thế giới. Tìm hiểu cách dùng...

Trí tuệ nhân tạo là gì? Tại sao AI dần trở nên...

Trí tuệ nhân tạo (AI) là một bước tiến vượt trội trong ngành khoa học máy tính (Computer science). AI được tạo ra để có thể thực hiện các...

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


Thông báo lịch nghỉ Lễ 30.04 và 01.05.2024

Công ty TNHH Thương mại Điện tử Công nghệ LP xin trân trọng thông báo đến Quý khách hàng, Đối tác và nhân viên lịch nghỉ Lễ 30 tháng 4 và 01 tháng 5.

Tuyển dụng Thực tập sinh SEO 2024

SEO là một ngách đặc thù trong ngành Marketing, LPTech mong muốn tìm được ứng viên đam mê số liệu, luôn cập nhật công nghệ mới để cùng đồng hành.

Tuyển dụng Nhân viên kinh doanh 2024

Đam mê thử thách, nhiệt huyết, năng động là tất cả những điều LPTech cần ở một nhân viên kinh doanh tài năng

Tuyển dụng Nhân viên SEO Marketing 2024

Đợt tuyển dụng mới trong năm của LPTech đã chính thức trở lại rồi. Ai sẽ là chủ nhân của chiếc ghế SEO cuối cùng tại team Marketing của LPTech?

Tuyển dụng Thực tập sinh Social Media 2024

Được xem là gương mặt nhận diện tại công ty, LPTech đang tìm kiếm một tài năng năng động, sáng tạo, đam mê các xu hướng mới trên mạng xã hội.

Tuyển dụng CTV Content Writer 2024

LPTech tuyển dụng CTV Content chuẩn SEO, được training kiến thức về content, đa dạng chủ đề bài viết, thời gian làm việc linh hoạt.

Thông báo lịch nghỉ lễ Giỗ tổ Hùng Vương 2024

Công ty TNHH Thương mại Điện tử Công nghệ LP xin trân trọng thông báo đến toàn thể Quý khách hàng, Đối tác và nhân viên lịch nghỉ lễ Giỗ tổ Hùng...

Bộ nhận diện thương hiệu gồm những gì? Tại sao...

Bộ nhận diện thương hiệu được sử dụng để xây dựng và truyền tải hình ảnh của một doanh nghiệp đến với khách hàng. Vậy bộ nhận diện thương hiệu gồm...

Top 15 phần mềm quản lý KPI miễn phí cho doanh...

Phần mềm quản lý KPI giúp doanh nghiệp kiểm tra và đánh giá các chỉ số đo lường hiệu quả (KPI) của mình liên tục và dễ dàng. Xem ngay top 15 phần mềm!

Fiverr là gì? Cách tạo tài khoản kiếm tiền từ...

Fiverr là nền tảng cung cấp việc làm cho freelancer lớn nhất thế giới hiện nay. Trên đây, freelancer có thể tìm kiếm các công việc đa lĩnh vực để...