This page is a translated version of the page Composer and the translation is 100% complete.

Composer是一个PHP库的依存組件管理器。 自MediaWiki 1.25 版本起,MediaWiki核心的外部库的依存組件由Composer管理。 除此之外,自MediaWiki 1.22 版本起,它还可以管理安装的MediaWiki扩展。 然而,它目前尚未得到充分支持。。 这将在未来有所改观。

安装Composer

在Unix/Linux和macOS上

除了最简单的方式sudo apt install composer之外,安装Composer還有多種方法。

MediaWiki 1.31、1.35.0、和1.35.1只支援Composer 1.x。 要抓取最新的Composer 1.x穩定版:

wget -cO - https://getcomposer.org/composer-1.phar > composer.phar

MediaWiki >= 1.35.2支援Composer 2.x和Composer 1.x(以及REL1_36分支和master)。 要抓取最新的Composer 2.x穩定版:

wget -cO - https://getcomposer.org/composer-2.phar > composer.phar

对于OS X用户,您可以使用 Homebrew安装Composer: 請注意,這將安裝Composer 2.x版本,因此視您使用的MediaWiki版本而定,您可能需要依照上面的wget 指示來下載Composer 1.x。使用brew來安裝:

brew install composer

如果这不起作用,或者您没有安装Homebrew,您可以尝试:

php -r "readfile('https://getcomposer.org/installer');" | php

Toolforge和擴充功能發行版使用"integration/composer" git repo中的Composer副本。

一旦安裝Composer,您就可以透過下載phar檔案來執行指令:

php composer.phar someCommand

您可能需要將phar檔案移動到您的路徑中,以便它可以作為一般的可執行檔使用:

mv composer.phar /usr/local/bin/composer
composer someCommand

如果mv指令因權限問題而失敗,請以sudo重新執行。

sudo mv composer.phar /usr/local/bin/composer
composer someCommand

在Windows上

只要從下載頁面下載並執行安裝程式即可。 如果您更喜歡手動安裝,您可以依照上述步驟進行安裝,除了Windows預設是沒有wget(或APT或Homebrew)且沒有/usr/local/bin目錄之外。 在這種情況下,您只需在網頁瀏覽器中下載composer-1.phar,然後將其重新命名為composer.phar即可。


本機安裝

如果您沒有在伺服器上執行Composer的權限,那倒也不是沒有辦法。 也可以將MediaWiki資料夾下載到本機,安裝並執行Composer,然後將檔案傳回伺服器。

升級Composer

Composer 1.x

如果您想將Composer升級到最新的1.x穩定版(或從2.x穩定版降級),可以使用:

composer self-update --1

如果升級的指令因權限問題而失敗,請以sudo重新執行。

sudo composer self-update --1

如果您使用的是非常舊版的Composer,它可能沒有--1參數。在這種情況下,您可能需要執行self-update兩次。第一次可能會將它更新到2.x,所以第二次會將它降級到最新版本的1.x。

composer self-update
composer self-update --1

Composer 2.x

如果您正在使用Composer 1.x,並想要升級到Composer 2.x(且正在使用適當版本的MediaWiki,例如 >= 1.35.2),您可以使用:

composer self-update --2

如果升級的指令因權限問題而失敗,請以sudo重新執行。

sudo composer self-update --2


MediaWiki核心代码中的使用

MediaWiki 1.25+依靠一些外部的函式庫,這些函式庫由Composer管理。 Composer在vendor/autoload.php之中建立了一個自動加載器,它被包含在WebStart.php裏面 。

Composer管理的依套件被捆綁在MediaWiki和擴充功能的tarball發行版之中,因此系統管理員不需要直接使用Composer。 當使用Git安裝MediaWiki時,$IP/composer.json中聲明的依存套件可以通過執行composer update --no-dev在本地安裝,或者複製mediawiki/vendor.git的資源庫,以提供維基媒體生產叢集上需要使用的相同函式庫。

$IP 代表MediaWiki安装的安装路径(或“目录”),即LocalSettings.php index.php 所在的目录


使用composer-merge-plugin

$IP 代表MediaWiki安装的安装路径(或“目录”),即LocalSettings.php index.php 所在的目录

MediaWiki核心「擁有」$IP/composer.json,並會在tarball和Git管理的更新中更改該檔案的內容。 為了允許本機安裝,以便使用Composer去載入可選的函式庫和/或使用Composer管理擴充功能,開發了一個特殊的Composer外掛,名為composer-merge-plugin[1] 這個外掛和MediaWiki核心的composer.json配置,可讓本機的部署將所需的擴充功能和函式庫添加到MediaWiki根目錄內的 composer.local.json 檔案中。

composer.local.json 也可以用來安裝 Composer 管理的函式庫,這些函式庫是擴充功能所需要的,但這些擴充功能本身並未使用Composer安裝。 只有在擴充功能不是從Extension Distributor所產生的tarball安裝時,才需要這樣做。

若要讓Composer發現並處理可能包含在任何及所有本機安裝的擴充功能中的 composer.json 檔案,請在 $IP/composer.local.json 中加入類似內容:

{
    "extra": {
        "merge-plugin": {
            "include": [
                "extensions/*/composer.json",
                "skins/*/composer.json"
            ]
        }
    }
}

變更composer.local.json之後,您需要執行composer update,以便Composer重新計算相依性,使變更生效。

資源


參考資料