composer — как установить / расставить приоритеты для определенных пакетов перед другими пакетами?

Я настраивал WordPress и получение необходимых плагинов через композитор вот уже несколько лет он работает отлично, но я перестал пытаться взломать или быть хитрым, когда дело доходит до установки плагинов, которые не знают, как использовать WP_SITEURL а также PaaS, который не поддерживает нестандартную структуру папок WordPress.

Поэтому мне интересно, смогу ли я по-прежнему использовать composer для настройки WordPress-ядра (или любого другого пакета), но я хочу, чтобы он был установлен первым.

Скажи в своем composer.jsonУ вас есть следующие пакеты:

{
"name": "test/composer-install-order",
"type": "project",
"repositories": [
{ "type": "composer", "url": "https://wpackagist.org" }
],
"require": {
"php": ">=7.2",
"composer/installers": "~1.6.0",
"johnpbloch/wordpress": "^4.9",
"wpackagist-plugin/better-search-replace": "*",
"wpackagist-plugin/bugherd": "*",
"wpackagist-plugin/disable-emojis": "*"},
"extra": {
"installer-paths": {
"public_html/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
"public_html/wp-content/themes/{$name}/": ["type:wordpress-theme"]
},
"wordpress-install-dir": "public_html"},
"config": {
"preferred-install": "dist",
"optimize-autoloader": true,
"sort-packages": true
}
}

composer.json выше говорит, что вам нужно 3 плагина: лучше-искать-заменить, гадить и отключить эмоджи

Но когда вы нажмете composer install:

➜  temp1 composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 7 installs, 0 updates, 0 removals
- Installing composer/installers (v1.6.0): Loading from cache
- Installing johnpbloch/wordpress-core-installer (1.0.0.2): Loading from cache
- Installing wpackagist-plugin/better-search-replace (1.3.2): Loading from cache
- Installing wpackagist-plugin/bugherd (1.0.0.0): Loading from cache
- Installing johnpbloch/wordpress-core (4.9.8): Loading from cache
- Installing johnpbloch/wordpress (4.9.8): Loading from cache
- Installing wpackagist-plugin/disable-emojis (1.7.2): Loading from cache
Writing lock file
Generating optimized autoload files
➜  temp1

Вы получите только 1 плагин внутри wp-content/plugins папка. Причина этого заключается в том, что при проверке печати выше, 2 плагина better-search-replace а также bugherd где установлен первый ДО файлов ядра WordPress johnpbloch/wordpress, Так даже composer извлек эти 2 пакета плагинов в правильную папку, johnpbloch/wordpress удалил их, потому что перезаписал wp-content/plugins папка.

Единственный способ для этого, если я установлю johnpbloch/wordpress сначала до плагинов, но я не знаю, возможно ли это, так как композитор установить через composer.lock содержание.

Надеюсь, кто-нибудь может помочь.

С Уважением,

0

Решение

Сопровождающий здесь. Как и предполагалось, OP открыл вопрос здесь: https://github.com/johnpbloch/wordpress-core/issues/14

Я хотел бы сослаться на него (и скопировать его ниже) здесь, чтобы, если кто-нибудь столкнется с этой проблемой в будущем, был ответ, который пролил бы некоторый свет на то, что происходит. 🙂

Ответ скопирован с вопроса github:

Привет Волк,

Спасибо за вопрос. Основная проблема здесь — конфликт
между тем, как работает Composer, и тем, как работает WordPress по умолчанию.

Если вы хотите использовать Composer для управления ядром WordPress в качестве зависимого
пакет, вы должны использовать конкретный нестандартный вариант установки
для WordPress, в котором ядро ​​установлено в подкаталоге и
Каталог wp-content находится за пределами основного пакета.
Rarst имеет отличный микросайт, детализирующий оптимальное
настроить
. Вы также можете проверить мой образец
WordPress стартовый пакет
пакет
за
вдохновение. Вы можете прочитать больше о установка ядра в
подкаталог

а также перемещение
WP-содержание

на кодексе.

Если вы заинтересованы в чтении немного больше о аргументации
этот вопрос, пожалуйста, смотрите эта тема в установщике
хранилище

в котором тема получает немного более длительное обращение.

Надеюсь, это поможет!

2

Другие решения

johnpbloch/wordpress удалил их, потому что перезаписал wp-content/plugins папка

Когда пакеты начинают вести себя так, я не знаю, чего люди больше ожидают. Я бы порекомендовал вам подать проблему или запрос на изменение, чтобы изменить это поведение, потому что в лучшем случае оно кажется сомнительным, а если честно, просто злонамеренным.

Вы уверены, что это не ошибка неправильной конфигурации с вашей стороны в отношении путей плагинов или путей установщика WordPress?

1

По вопросам рекламы [email protected]