Manual:Composer.json best practices

From mediawiki.org
This page is a translated version of the page Manual:Composer.json best practices and the translation is 65% complete.
Other languages:

MediaWiki内部で使用される拡張機能/ライブラリ/等のためにcomposer.jsonファイルを作成するとき、従うべきいくつかのベストプラクティスを紹介します。 また、composer validateを実行すると、スキーマエラーが指摘されます。

設定

  • prepend-autoloader: false. ComposerのオートローダはMediaWikiのよりも遅く、ロードされるクラスのほとんどはMediaWikiの内部で見つかりそうなので、composerオートローダをプリペンドする代わりにアペンドしてください。 詳しくはこちらをご覧ください。
  • optimize-autoloader: true. 最適化しない理由はありません。

Good example: mediawiki/core

依存関係

  • 依存関係は、タグが利用できない場合は、特定のバージョン番号またはsha1コミットに固定する必要があります。
    • phpunitやphpcsなどの開発ツールでは、「dev-master」または「*」が使用可能です。

Good example: mediawiki/core

命名

Libraries hosted in Gerrit or by the Wikimedia GitHub account should typically be published under the "wikimedia" namespace (e.g. "wikimedia/cdb", "wikimedia/simplei18n"). The use of the "mediawiki" namespace should be reserved for extensions and other intrinsically MediaWiki related components (bot frameworks, etc). 独立した組織の下でGitHubでホストされているプロジェクトは、グループが公開するライブラリ全体で一貫して適用されるように、同様の組織名スペースの規約を採用することが推奨されます。

作者

Major authors to the project should be documented in the "authors" property. 少なくとも、名前とメールアドレスの欄は記入する必要があります。 For libraries, this will be displayed on Special:Version in the "Installed libraries" section.

拡張機能

拡張機能の名前はすべて小文字で、単語の区切りとしてハイフンを使用します。例えば

  • Extension:WikiEditor --> mediawiki/wiki-editor
  • Extension:MassMessage --> mediawiki/mass-message

To make themselves installable, a dependency upon "composer/installers" with version >= 1.0.1 is required, and the type needs to be set to "mediawiki-extension".

外装

タイプが「mediawiki-skin」でなければならないことを除いて、主に拡張機能と同じです。 名称の末尾には「-skin」を付けること。

Because composer uses lowercase names for packages (e.g. mediawiki/vector-skin), the extra.installer-name property must be set to the uppercase name (e.g. Vector) so it is cloned in the right directory.

To make themselves installable, a dependency upon "composer/installers" with version >= 1.0.13 is required, and the type needs to be set to "mediawiki-skin".

Good example: mediawiki/skins/Vector

Also extension.json

MediaWiki バージョン:
1.25
Gerrit change 166705

Extensions and skins register information about themselves using an extension.json or skin.json file. Some metadata fields in these files overlap (discussed in タスク T89456), including

  • homepage and url
  • license and license-name