Пакетные зависимости
Последнее обновление Oct 15th, 2026 | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn moreНовое в MODX 2.4 это возможность определять зависимости пакетов в Транспортных пакетах. Если они установлены, пользователь не сможет установить пакет, пока все зависимости не будут выполнены.
Добавление пакетных зависимостей в вашу сборку¶
Пакетные зависимости добавляются к атрибутам Пакета, которые уже используются для указания файла лицензии license, readme и журнала изменений changelog, обычно добавляются в конец вашего скрипта сборки. Если вы используете другой способ создания пакетов, вам может потребоваться свериться с этой документацией, чтобы узнать, поддерживает ли она эти атрибуты и как вы можете определить там зависимости.
$builder->setPackageAttributes(array(
'license' => file_get_contents($sources['docs'].'license.txt'),
'readme' => file_get_contents($sources['docs'].'readme.txt'),
'changelog' => file_get_contents($sources['docs'].'changelog.txt'),
'setup-options' => array(
'source' => $sources['build'].'setup.options.php',
),
));
Чтобы добавить зависимости пакетов, просто добавьте опцию requires, указав массив имен пакетов и минимальные требования к версии.
Например, для указания необходимости пакета FormIt версии 2.2 или выше:
$builder->setPackageAttributes(array(
'license' => file_get_contents($sources['docs'].'license.txt'),
'readme' => file_get_contents($sources['docs'].'readme.txt'),
'changelog' => file_get_contents($sources['docs'].'changelog.txt'),
'setup-options' => array(
'source' => $sources['build'].'setup.options.php',
),
'requires' => array(
'formit' => '>=2.2.0',
)
));
Вы можете указать больше пакетов в списке, просто добавив дополнительные элементы в этот массив. Вы также можете добавить проверки для modx и php, чтобы потребовать конкретную версию MODX или PHP.
Имейте в виду, что эти зависимости пакетов работают только в MODX 2.4 и выше. Если вы собираетесь поддерживать более старые версии, вы можете добавить дополнительную проверку в Резольвер или добавить инструкции в свою документацию.
Есть разные способы указать номера версий, каждый из которых имеет разное значение. Вы также можете добавить несколько ограничений, разделив их запятыми - но без пробелов, как в '>=2.0,<3.0'. Пробел после запятой текущий парсер не отбрасывает, и проверка молча не проходит.
| Токен | Что это значит | Пример строки для указания версии |
|---|---|---|
| ~ | Требуется как минимум указанная версия, до следующей значимой версии | ~1.0 - это >=1.0,<2.0; ~1.3.0 - это >=1.3.0,<1.4.0 |
| n.* | Подстановочный знак для определенной части строки версии | 1.* - это >=1.0,<2.0 |
| <, <= | Не выше этой версии | <2.0 или <=1.9.9 |
| >, >= | Не ниже этой версии | >=2.2.0 |
| != | Любая версия, кроме этой | !=2.0 |
| точная версия | Ровно эта версия | 2.2.0 |
| * | Любая версия подойдет |
Не используйте одиночный оператор ! («не эта версия») и текстовые операторы eq, ne, le, ge: парсер понимает только символы из таблицы выше, поэтому всё остальное либо никогда не совпадает, либо, в случае одиночного !, передаётся в PHP version_compare(), который на PHP 8.1+ бросает ValueError и может прервать запрос установки.
Как невыполненные зависимости блокируют установку¶
Перед установкой MODX проверяет каждый элемент requires по установленным пакетам (плюс специальные ключи modx и php). Если хотя бы одно требование не выполнено, запрос установки прерывается и в лог пишется сообщение package_dependency_unsatisfied.
Атрибут пакета abort_install_on_unsatisfied_dependency (по умолчанию true) управляет этим поведением: задайте его false в том же массиве атрибутов, что и requires, чтобы установка продолжилась - сообщение о невыполненной зависимости по-прежнему запишется в лог, но больше не останавливает пакет.
Скачивание зависимостей из менеджера¶
В диалоге установки пакета требования перечислены на вкладке Dependencies, и для каждого указано, установлено ли оно уже или его можно скачать у провайдера. Действие Download ищет зависимость у зарегистрированных провайдеров и устанавливает найденное.
Известное ограничение: резолвер в текущей версии всегда сообщает, что разрешение не удалось, - см. #17065. Поэтому после скачивания зависимости установка всё равно остаётся заблокированной, пока зависимость не будет установлена отдельно (или атрибут abort_install_on_unsatisfied_dependency не станет false).
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$194 per month—let's make that $500!
Learn more










