Tại sao bao gồm tệp composer.json với plugin của tôi?


7

Lợi thế của việc bao gồm một tệp composer.json trong plugin của tôi là gì nếu người dùng tiềm năng của plugin của tôi có thể lấy nó dưới dạng một gói thông qua WPackagist?

Câu trả lời:


9

TL; DR

Nếu bạn muốn hỗ trợ Trình soạn thảo, thêm một phần composer.jsontốt hơn thì hãy để WPackagist tạo một gói cho bạn.

Có một số lý do, không ai thực sự quan trọng, nhưng xem xét rằng để tạo ra một composer.jsonkhông đòi hỏi nhiều nỗ lực, nó có thể xứng đáng.

composer.json Những lợi ích

Dưới đây là một danh sách không đầy đủ các lợi ích của việc sử dụng composer.json.

Nhà phát triển thân thiện

Khi bạn yêu cầu một gói, Trình soạn thảo xem xét các kho lưu trữ để tìm gói cụ thể đó. Packagist và WPackagist là 2 kho lưu trữ.

Sự khác biệt là Packagist luôn được Composer phân tích cú pháp, trong khi WPackagist phải được thêm thủ công vào dự án composer.json.

Để yêu cầu một plugin trên Packagist, bạn cần một dòng duy nhất trong composer.json:

"require": {
    "your-name/your-plugin-name":"1.*",
}

Để yêu cầu plugin trên WPackagist, bạn cũng cần định cấu hình kho lưu trữ:

"repositories":[
    {
        "type":"composer",
        "url":"http://wpackagist.org"
    }
],
"require": {
    "your-name/your-plugin-name":"1.*",
}

Điều này cũng có liên quan khi sử dụng dòng lệnh, xem

composer create-project your-name/your-plugin-name

VS

composer create-project wpackagist-plugin/your-plugin-name --repository-url=http://wpackagist.org

Hiệu suất

Khi một dự án chứa nhiều kho lưu trữ hơn, Composer sẽ ping tất cả chúng để tìm thông tin về các gói.

Vì vậy, thêm kho lưu trữ WPackagist, làm chậm cài đặt. Cũng xem xét rằng tất cả các máy chủ có thể ngừng hoạt động, cho bất kỳ cộng hưởng. Nó xảy ra với các công ty lớn hơn nhiều so với công ty đứng sau WPackagist, vì vậy mỗi kho lưu trữ bạn thêm vào, đó là một điểm có thể thất bại bổ sung.

Cấu hình

Một trong những lợi thế của việc có một composer.jsonlà bạn có thể định cấu hình cách Trình soạn thảo sẽ tìm nạp plugin của bạn.

Ví dụ: bạn có thể sử dụng cấu hình tên gói trong thuộc nametính, thay vì để WPackagist tạo tên gói cho bạn.

Ngoài ra, có rất nhiều cấu hình có thể được thực hiện composer.json, chỉ một vài ví dụ:

  • bạn có thể sử dụng branch-aliascài đặt để cải thiện khả năng tương thích của phiên bản phát triển của plugin
  • ngay cả khi bạn không có phụ thuộc, bạn có thể sử dụng requirecài đặt để đặt phiên bản PHP tối thiểu,
  • các conflictthiết lập cho phép bạn rõ ràng thông báo về mâu thuẫn gói ...

và như thế.

Nhận thức về quyền sở hữu

Khi bạn yêu cầu một plugin từ WPackagist, phần "nhà cung cấp" của tên gói luôn luôn wpackagist-plugin.

Vì vậy, mọi người sẽ yêu cầu bạn plugin như:

"require": {
    "wpackagist-plugin/your-plugin-name":"1.*",
}

Nếu bạn đặt plugin trên packagist, bạn có thể sử dụng tiền tố của nhà cung cấp của riêng bạn và tôi nghĩ là tốt hơn cho tiếp thị:

"require": {
    "your-name/your-plugin-name":"1.*",
}

Tự động tải

Trình soạn thảo cung cấp tự động tải cho các gói. Nếu bạn quyết định sử dụng Trình soạn thảo, bạn có thể hưởng lợi từ nó. Tuy nhiên, xem xét rằng bạn đang chuyển plugin của mình sang repo chính thức, bạn cần tính đến việc phần lớn người dùng của bạn có thể sẽ cài đặt plugin của bạn không sử dụng Trình soạn thảo. Nó có nghĩa là bạn phải có khả năng:

  • gửi thư mục "nhà cung cấp" (có chứa tự động tải) trong thư mục plugin của bạn trong repo chính thức
  • sử dụng trình tải tự động tùy chỉnh hoặc cơ chế tải thủ công trong trường hợp plugin được sử dụng mà không có Trình soạn thảo.

Khả năng thứ hai chỉ được đề cập vì plugin của bạn không có phần phụ thuộc được xử lý bởi Trình soạn thảo, nếu không, thư mục nhà cung cấp tàu là khả năng duy nhất để plugin của bạn hoạt động mà không có Trình soạn thảo, nhưng không có vấn đề: khi các plugin khác nhau được cài đặt với thư mục nhà cung cấp nhúng khả năng xảy ra xung đột phiên bản nếu các plugin khác nhau vận chuyển phiên bản khác nhau của cùng một gói.

Hỗ trợ nhà soạn nhạc rõ ràng

Bằng cách thêm composer.jsonbạn làm cho mọi người biết rằng bạn hỗ trợ rõ ràng cho Nhà soạn nhạc. Ví dụ: khi tôi tìm kiếm một plugin, để tìm một composer.jsonthư mục plugin là một điểm cộng lớn đối với tôi, vì tôi có xu hướng không sử dụng các plugin không làm điều đó.

Hơn nữa, có những công cụ nhắm mục tiêu plugin hỗ trợ Composer.

Ví dụ: tôi có một tập lệnh ngăn cập nhật tự động cho plugin / chủ đề có composer.json.


1

Các composer.jsontập tin thường chứa các thông tin bổ sung mà không có sẵn trong các readme.txttập tin. Vì vậy, nó chỉ đơn giản có thể phục vụ như một tệp readme cho các phụ thuộc của plugin của bạn.

Vì Trình soạn thảo nằm trong hộp công cụ của nhiều nhà phát triển, nên nó có thể giúp họ hiểu rõ hơn về cách plugin của bạn được liên kết với nhau.

Ví dụ, các plugin .org được gọi là abondenced, sẽ rất hữu ích khi có sẵn tệp đó cho ai đó muốn chia rẽ nó, cập nhật và mở rộng nó.

Nếu chúng tôi muốn đăng ký plugin của chúng tôi trên packagist.org , thì tất nhiên chúng tôi sẽ cần nó.


Cảm ơn @birgire. Trong trường hợp cụ thể của tôi, plugin của tôi không có phụ thuộc nên sẽ không cần phải cung cấp composer.jsontệp dưới dạng "readme" cho nhà phát triển. Tôi đã suy nghĩ nhiều hơn trong quá trình sử dụng composer.jsonhoàn toàn cho các khả năng tự động tải. Đây có phải là một điều phổ biến để làm? Tôi đang tự hỏi nếu bạn có bất kỳ suy nghĩ về điều đó? Cảm ơn một lần nữa.
henrywright

Tôi nghĩ rằng vẫn có thể cung cấp cho chúng tôi thông tin về cách bạn tự động tải và plugin của bạn không có sự phụ thuộc rõ ràng của bên thứ 3 cho Trình soạn thảo. Tôi đã cố gắng tìm kiếm (google) thư mục plugin .org composer.json site:plugins.svn.wordpress.orgnhưng không được. @henrywright
birgire

Nếu tôi sử dụng psr-4khóa trong composer.json, Trình soạn thảo sẽ tạo tệp nhà cung cấp / autoload.php, mà tôi cho rằng tôi có thể cam kết với repo wp.org. spl_autoload_register()được sử dụng thay vì __autoload()vậy nếu bất kỳ ai khác tạo ra một plugin làm điều tương tự thì không nên có xung đột.
henrywright

Bạn được chào đón, JetPack gửi kèm một tệp composer.json rất đơn giản và plugin Yoast SEO gửi kèm theo thư mục nhà cung cấp @henrywright - chỉ cần chú ý tóm tắt hay này của gmazzap +1
birgire
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.