hydrawiki / hydrate
使用 Composer 管理的扩展和皮肤为 MediaWiki 安装进行补水。
Requires
- php: >=7.2.0
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^8.0
This package is not auto-updated.
Last update: 2022-02-01 13:16:22 UTC
README
通过 Composer 安装的扩展和皮肤安装 MediaWiki。
如何操作
首先,通过 Composer 安装 Hydrate
$ composer require hydrawiki/hydrate
安装 Hydrate 后,从 LocalSettings.php
中删除所有对 wfLoadExtension
和 wfLoadSkin
的引用,然后使用 MediaWiki 扩展注册实例初始化 Hydrator,使用 loadManifest
添加所有包,使用 hydrate
将所有包排队,例如:
$hydrator = new Hydrawiki\Hydrate\Hydrator(ExtensionRegistry::getInstance());
$hydrator->loadManifest(__DIR__ . '/hydrate.json');
$hydrator->hydrate();
您的 MediaWiki 安装现在将在 hydrate.json
包清单中注册任何通过 Composer 管理的 MediaWiki 扩展或皮肤。
{
"extensions": {
"vendor-a/extension-1": {},
"vendor-b/extension-2": {},
"vendor-b/extension-3": {}
},
"skins": {
"vendor-a/skin-1": {},
"vendor-b/skin-2": {},
"vendor-c/skin-3": {}
}
}
安装包
许多 MediaWiki 包实现了 MediaWiki Composer 安装程序,它自动将扩展和皮肤从 vendor
移动到 extensions
和 skins
,但这在这种情况下不是期望的行为。因此,在安装任何包之前,请禁用 MediaWiki 安装程序。
{
"extra": {
"installer-disable": [
"mediawiki"
]
}
}
包设置
清单中的每个包都可以指定一个设置文件,该文件在包启用时可用,例如
hydrate.json
{
"extensions": {
"vendor/extension": {
"settings": "settings/extension.php"
}
}
}
LocalSettings.php
foreach ($hydrator->getSettingsFiles() as $setting) {
require_once $setting;
}
所有属性
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
启用 | 布尔型 | true | 启用的包将被添加到扩展注册表中 |
必需 | 布尔型 | false | 必需的包不能被用户禁用 |
设置 | 字符串 | null | 包设置文件路径 |
原因
包管理器使依赖项的管理变得简单,不幸的是,MediaWiki 生态系统还没有完全接受包管理,许多扩展是通过手动将第三方文件添加到代码库中安装的。Hydrate 旨在通过利用 Composer 和 MediaWiki 扩展注册表,以低摩擦的方式弥合现代包管理与 MediaWiki 之间的差距。
注意事项
Hydrate 要求包(扩展、皮肤)使用 MediaWiki >=1.2.5 配置文件(extension.json
和 skin.json
)。任何不遵循此标准的包与 Hydrate 不兼容,但是可以通过一些工作将这些配置添加到包中。
Hydrate 要求包通过 Composer 提供。通过 Composer 提供包很简单,对于维护自己的扩展存储库的公司来说,每个扩展不应超过几分钟。
Hydrate 是提供更可维护的皮肤和扩展依赖项管理方法的实验,它尚未在生产 MediaWiki 安装中得到广泛使用。
许可证
MIT License
Copyright (c) 2019 Samuel Ryan <sryan@fandom.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.