Puncte:0

Cum determină exact drush PROJECTROOT și WEBROOT pentru un proiect?

drapel ph

În Configurație Drush secțiunea documentației oficiale se spune:

Fișierele drush.yml sunt descoperite după cum urmează, în ordinea de prioritate:

  1. Dosarul site-ului Drupal (de exemplu, site-uri/{example.com}/drush.yml).
  2. site-uri/toate/drush, WEBROOT/drush sau PROJECTROOT/drush.
  3. ...

Acolo puteți vedea „WEBROOT” și „PROJECTROOT”, dar nu există o explicație despre ce sunt acestea. În codul Drush nu există nicio mențiune în afară de configurația în sine:

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

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

Cum determină Drush valorile PROJECTROOT și WEBROOT?

Întrebările sunt ce înseamnă acele nume, dar cum decide Drush care sunt. Dacă sunt folosite pentru a căuta diferite fișiere de configurare, înseamnă că Drush a rezolvat acele nume în foldere sau căi reale în sistemul curent. Cum le rezolvă Drush?

Bănuiesc că Drush preia folderul rădăcină al site-ului (definit în alias-ul Drush. Dacă acel folder este o rădăcină Drupal, atunci WEBROOT și PROJECTROOT sunt aceleași, folderul rădăcină definit. Dacă folderul rădăcină configurat are un compozitor.json si a web folder, apoi PROJECTROOT este calea rădăcină configurată, iar web folderul este WEBROOT... dar este doar o presupunere.

drapel cn
Mi-aș imagina că înseamnă literalmente folderul rădăcină al proiectului tău față de folderul din proiectul tău care conține rădăcina web.
sanzante avatar
drapel ph
Da asta e adevărat. Dar de unde știe Drush asta? În configurația alias definiți calea rădăcină. Acesta ar putea fi webroot-ul, dar nu este adevărat, deoarece puteți indica folderul care conține composer.json. Bănuiesc că Drush este suficient de inteligent pentru a verifica dacă valoarea configurației rădăcină este o rădăcină drupal (în acest caz WEBROOT și PROJECTROOT sunt acel folder) sau este o schemă boilerplate ca cea creată de `composer create-project`, deci folderul cu compozitor. json este PROJECTROOT și folderul web este WEBROOT... dar aș dori o confirmare.
drapel cn
Da, drush este suficient de inteligent pentru a parcurge structura folderului până când poate găsi ceva pe care îl identifică ca rădăcină a proiectului Drupal (ar trebui să te uiți la cod pentru a obține criteriile exacte). Similar cu modul în care funcționează Git, Composer și alte instrumente
Puncte:3
drapel in

Utilizări Drush webflow/drupal-finder pentru a determina aceste directoare. Logica este în DrupalFinder::findAndValidateRoots()

WEBROOT este folderul rădăcină Drupal și PROJECTROOT este folderul în care este plasat fișierul composer.json.

DrupalFinder este folosit în mai multe locuri, dar partea interesantă este funcția Preflight::setSelectedSite.

Acolo Drush localizează „Rădăcina Drupal” și „Rădăcina compozitorului”. „Drupal Root” este... ei bine, folderul Drupal Root și ceea ce documentația Drush numește WEBROOT. Și „Composer Root” este folderul în care se află fișierul composer.json și este ceea ce documentația numește PROJECTROOT.

sanzante avatar
drapel ph
Da, înțeleg că, întrebarea este mai mult despre modul în care Drush determină valorile pentru acele foldere. Mi-am actualizat întrebarea.
sonfd avatar
drapel in
Actualizat @sanzante
sanzante avatar
drapel ph
Mulțumiri! Asta cautam! Îmi actualizez întrebarea cu constatările mele.
Puncte:0
drapel 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
drapel ph
Aceasta este definiția standard a unei rădăcini web și a unei rădăcini de proiect. Știu deja asta. Ceea ce întreb este modul în care Drush determină valoarea WEBROOT și PROJECTROOT, nu definiția generală a rădăcinii web și a proiectului în contextul unui proiect web.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.