Ավելացնել composer.json ֆայլ
Օգտագործողական մոդուլներ մշակելիս կան մի քանի դեպքեր, երբ ծրագրավորողը պետք է ավելացնի composer.json ֆայլ իր մոդուլի մեջ։ Դրանցից որոշ դեպքեր կախված են նրանից, արդյոք կաստոմ մոդուլը նախատեսված է drupal.org համայնքին որպես նախագիծ փոխանցելու համար։
Եթե մոդուլի մշակողը ցանկանում է օգտագործել packagist.org-ում տեղադրված PHP գրադարան, ապա նա պետք է ավելացնի composer.json ֆայլ իր նախագծում։
Եթե մոդուլը հանդիսանում է drupal.org-ում տարածված մոդուլ, ունի կախվածություններ այլ մոդուլներից և ցանկանում է թեստավորել այդ կախվածությունների փոփոխությունները՝ օգտագործելով DrupalCI որպես զարգացման մաս, ապա պետք է ունենա composer.json, որը արտահայտում է այդ Drupal մոդուլի կախվածությունները (DrupalCI-ն կարող է հայտնաբերել միայն կախվածությունների փոփոխությունները, որոնք կատարվել են composer.json-ում, ոչ թե .info կամ .info.yml ֆայլերում)։
Եթե մոդուլի մշակողը ցանկանում է օգտագործել ավելի հստակ սահմանափակումներ, որոնք տրամադրվում են composer.json-ով, օրինակ՝ դասակարգման օպերատորներ կամ tilde-ներ, դրանք հնարավոր են միայն composer.json-ում։ (Չնայած Drupal-ը չի հետևի այդ սահմանափակումներին, դրանք գործելու են միայն կառուցման ժամանակ, եթե վերջնական օգտատերը օգտագործում է Composer իր կայքը ստեղծելիս)։
Եթե մոդուլը չունի որևէ կախվածություն կամ կախվածություններն ամբողջովին կազմում են այլ Drupal մոդուլներ, ապա composer.json ֆայլի անհրաժեշտություն չկա։ Սակայն composer.json-ի առկայությունը ոչ մի կերպ չի վնասում։
Անկախ նրանից՝ ծրագրավորողն ունի composer.json ֆայլ, մոդուլի Drupal կախվածությունները պետք է արտահայտվեն նաև .info.yml ֆայլերում, որպեսզի Drupal-ը կարողանա ապահովել, որ ճիշտ մոդուլները ակտիվացված են։
Նշեք ձեր մոդուլը որպես PHP փաթեթ
PHP լայն համայնքը օգտագործում է Composer փաթեթների կառավարման համար։ Դա նաև կիրառվում է Drupal-ում։ Օրինակ, Drupal նախագիծը կախված է «drupal/core» փաթեթից։ «drupal/core» փաթեթի տիպը սահմանված է որպես «drupal-core», և Composer-ը գիտի՝ ինչ անել դրա հետ։ composer/installers գրադարանը սահմանում է Drupal-ի մի քանի տիպեր, այդ թվում՝
- drupal-module
- drupal-theme
- drupal-library
- drupal-profile
- drupal-drush
Ահա լրիվ օրինակ, թե ինչպես է mobile_detect նախագիծը օգտագործում composer.json-ը՝ կախվածություն ունենալով արտաքին mobiledetect/mobiledetectlib նախագծից․
{ "name": "drupal/mobile_detect", "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices.", "type": "drupal-module", "homepage": "https://drupal.org/project/mobile_detect", "authors": [ { "name": "Matthew Donadio (mpdonadio)", "homepage": "https://www.drupal.org/u/mpdonadio", "role": "Maintainer" }, { "name": "Darryl Norris (darol100)", "email": "admin@darrylnorris.com", "homepage": "https://www.drupal.org/u/darol100", "role": "Co-maintainer" } ], "support": { "issues": "https://drupal.org/project/issues/mobile_detect", "irc": "irc://irc.freenode.org/drupal-contribute", "source": "https://cgit.drupalcode.org/mobile_detect" }, "license": "GPL-2.0-or-later", "minimum-stability": "dev", "require": { "mobiledetect/mobiledetectlib": "~2.8" } }
Ձեր փաթեթը անվանակոչելու համար պետք է հետևեք Drupal Composer անվանակոչման կանոններին։
Կախվածությունների սահմանում composer.json-ում
Եթե ցանկանաք, կարող եք սահմանել ձեր մոդուլի արտաքին կախվածությունները composer.json-ում։ Drupal-ի միջուկը չի հայտնաբերելու և չի կառավարվելու այդ կախվածությունները ավտոմատ կերպով։ Այս կախվածությունները օգտագործելու համար անհրաժեշտ է կիրառել հետևյալ սպասարկման ռազմավարություններից մեկը՝
- Տեղադրել Drupal միջուկն ու մոդուլը Composer-ի միջոցով։
- Ձեռնքով փոփոխել ձեր Drupal-ի տեղադրման ռութ թղթապանակի composer.json ֆայլը։
Վերոնշյալից բացի, հավելյալ տեղեկությունների համար՝ դիտեք Composer-ի և Drush Make-ի համեմատություն որպես կախվածությունների կառավարիչներ։
Drupal մյուս մոդուլներից կախվածությունների ավելացում
Դեֆոլտով Composer-ն որոնում է միայն այն փաթեթները, որոնք հրապարակված են Packagist կայքում, երբ լուծում է իր կախվածությունները։ Drupal մոդուլների մեծ մասը այնտեղ չի հրապարակվում, քանի որ Drupal-ը ունի իր սեփական ռեպոզիտորիա։ Հենց դրա պատճառով կարող եք ստանալ սխալներ, օրինակ՝
Հայտնաբերված drupal/module փաթեթը չկա, հնարավոր է, որ փաթեթի անվանումում սխալ կա։
Դուք կարող եք կարգավորել Composer-ին փնտրել Drupal մոդուլները packages.drupal.org ռեպոզիտորիայում՝ կատարելով հետևյալ հրամանը՝
$ composer config repositories.drupal composer https://packages.drupal.org/8
Այս հրամանը կավելացնի հետևյալ բաժինը ձեր composer.json ֆայլում՝
"repositories": { "drupal": { "type": "composer", "url": "https://packages.drupal.org/8" } }
Համատեղելիություն Drupal 9-ի հետ
composer.json ֆայլի առկայությունը պահանջված չէ Drupal 9-ի համատեղելիության համար։ Drupal 9 համատեղելի է info.yml ֆայլով։ Եթե ձեր նախագծում կա composer.json ֆայլ, drupal/core-ի համատեղելիության պահանջը պարտադիր չէ Drupal 9-ի համատեղելիության համար։ Սակայն եթե ձեր require բաժնում նշված է drupal/core-ի պահանջվող տարբերակը, այն պետք է համատեղելի լինի Drupal 9-ի հետ։
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.