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

安装Composer
自MediaWiki 1.35.2版本之後起,MediaWiki支持Composer 2.x。 |
在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
的資源庫,以提供維基媒體生產叢集上需要使用的相同函式庫。
使用composer-merge-plugin
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重新計算相依性,使變更生效。
資源
- 如何通過Composer安裝扩展
- 如何將外部函式庫添加到MediaWiki的核心或扩展
- 創建composer.json時的最佳做法
- 有關將軟件包添加到packagist.org的信息
- w:Composer (software)