hydrawiki/hydrate

此包已被废弃,不再维护。未建议替代包。

使用 Composer 管理的扩展和皮肤为 MediaWiki 安装进行补水。

0.1.0 2019-03-24 22:09 UTC

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 中删除所有对 wfLoadExtensionwfLoadSkin 的引用,然后使用 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 移动到 extensionsskins,但这在这种情况下不是期望的行为。因此,在安装任何包之前,请禁用 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.jsonskin.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.