Рейтинг:0

Как именно drush определяет PROJECTROOT и WEBROOT для проекта?

флаг ph

в Драш Конфигурация разделе официальной документации сказано:

Файлы drush.yml обнаруживаются, как показано ниже, в порядке приоритета:

  1. Папка сайта Drupal (например, sites/{example.com}/drush.yml).
  2. сайты/все/drush, WEBROOT/drush или PROJECTROOT/drush.
  3. ...

Там вы можете увидеть «WEBROOT» и «PROJECTROOT», но нет объяснения, что это такое. В коде Друша, кроме самой конфигурации, тоже нет упоминания:

$ grep PROJECTROOT * -r
drush/docs/using-drush-configuration.md:2. `sites/all/drush`, `WEBROOT/drush` или `PROJECTROOT/drush`.                                                                                                                                

$ grep ВЕБ-КОРЕНЬ * -r 
drush/docs/using-drush-configuration.md:2. `sites/all/drush`, `WEBROOT/drush` или `PROJECTROOT/drush`.                 

Как Drush определяет значения PROJECTROOT и WEBROOT?

Вопрос в том, что означают эти имена, но как Друш решает, что они собой представляют. Если они используются для поиска разных файлов конфигурации, это означает, что Drush преобразовал эти имена в фактические папки или пути в текущей системе. Как Drush их разрешает?

Я предполагаю, что Drush берет корневую папку сайта (определяется псевдонимом Drush. Если эта папка является корнем Drupal, то WEBROOT и PROJECTROOT совпадают, определенная корневая папка. Если настроенная корневая папка имеет композитор.json и сеть папку, то PROJECTROOT — настроенный корневой путь, а сеть папка - это WEBROOT... но это всего лишь предположение.

флаг cn
Я бы предположил, что это буквально означает корневую папку вашего проекта по сравнению с папкой в ​​вашем проекте, которая содержит корневой веб-сайт.
sanzante avatar
флаг ph
Да, это правда. Но откуда Друш это знает? В конфигурации псевдонима вы определяете корневой путь. Это может быть webroot, но это не так, потому что вы можете указать на папку, содержащую composer.json. Я предполагаю, что Drush достаточно умен, чтобы проверить, является ли значение конфигурации root корнем drupal (в этом случае WEBROOT и PROJECTROOT являются этой папкой) или шаблонной схемой, подобной той, что создана `composer create-project`, поэтому папка с composer. json — это PROJECTROOT, а веб-папка — это WEBROOT… но мне нужно подтверждение.
флаг cn
Да, drush достаточно умен, чтобы просмотреть структуру папок, пока не найдет что-то, что он идентифицирует как корень проекта Drupal (вам придется посмотреть код, чтобы получить точные критерии). Подобно тому, как работают Git, Composer и другие инструменты
Рейтинг:3
флаг in

Друш использует webflow/drupal-finder для определения этих каталогов. Логика именно в DrupalFinder::findAndValidateRoots()

WEBROOT — это корневая папка Drupal, а PROJECTROOT — это папка, в которой находится файл composer.json.

DrupalFinder используется в нескольких местах, но интересной частью является функция Preflight::setSelectedSite.

Там Друш находит «Корень Drupal» и «Корень Composer». «Корень Drupal» — это… папка Drupal Root и то, что в документации Drush называется WEBROOT. И «Composer Root» — это папка, в которой находится файл composer.json, и это то, что в документации называется PROJECTROOT.

sanzante avatar
флаг ph
Да, я понимаю, вопрос больше в том, как Drush определяет значения для этих папок. Я обновил свой вопрос.
sonfd avatar
флаг in
Обновлен @sanzante
sanzante avatar
флаг ph
Спасибо! Это то, что я искал! Я обновляю свой вопрос своими выводами.
Рейтинг:0
флаг de

When you download Drupal using Composer, you get directory (folder) with some files. This is the project root, as it is the top-level of the entire project.

However, when viewing a Drupal site through a browser, you are not viewing the project root, rather, you are viewing one directory below it; by default, this folder is called /web (though it can be changed in composer.json). The web folder is the webroot, as it is the top-level folder that is viewed when accessing the project through the web.

sanzante avatar
флаг ph
Это стандартное определение веб-корня и корня проекта. Я уже знаю, что. Я спрашиваю, как Drush определяет значение WEBROOT и PROJECTROOT, а не общее определение корня сети и проекта в контексте веб-проекта.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.