Manual:Composer.json best practices/ja

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

設定

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

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".

Good example: mediawiki/extensions/Bootstrap

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

Because composer uses lowercase names for packages (e.g. ), the   property must be set to the uppercase name (e.g.  ) 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
Extensions and skins register information about themselves using an  or   file. Some metadata fields in these files overlap (discussed in ), including
 * and
 * and