V tomto článku se zaměříme na následující téma:
Do konce tohoto článku byste měli vědět, jak instalovat a aktualizovat moduly a témata Drupalu pomocí Composeru.
Vytvoření projektu Drupal založeného na Composeru a instalace modulů a témat Drupalu.
Nejnovější verze Composeru
composer self-update
Nejjednodušší způsob, jak vytvořit projekt Drupal s Composerem, je použití šablony. Pro tohoto účelu budeme používat příkaz create-project v Composeru. Když spustíte příkaz composer create-project some/project, tento příkaz vytvoří váš nový projekt klonováním šablony some/project.
Váš projekt bude založen na šabloně some/project. Například soubor composer.json ve šabloně some/project bude základem vašeho projektu. Poté nemá some/project žádný vliv na váš projekt.
Na Drupal.org můžete najít několik populárních šablon pro vytváření projektu Drupal s Composerem.
NOT: drupal/drupal
projekt byl ukončen a není doporučován.
V tomto článku použijeme nejvíce doporučovaný a široce používaný projekt drupal-composer/drupal-project. Tato šablona poskytuje dostatečnou konfiguraci pro vývoj projektu Drupal s Composerem.
drupal-composer/drupal-project
Spusťme následující příkaz pro vývoj projektu Drupalu s použitím této šablony:
$ composer create-project drupal-composer/drupal-project:8.x-dev my-project --stability dev --no-interaction
$ cd my-project
Pro více informací o dokumentaci projektu drupal-composer/drupal-project.
Začněme používat Composer k správě existující aplikace Drupal.
Začít spravovat projekt Drupal s Composerem, který není spravován s Composerem, může být na začátku trochu obtížné. Přesná metoda správy projektu Drupal s Composerem závisí na struktuře složek aplikace Drupal a může vyžadovat několik dalších kroků.
Existuje několik nástrojů, které automatizují proces převodu projektu Drupal na Composer:
composerize
command.Pokud selžete s výše uvedenými nástroji, můžete to udělat následujícím způsobem.
$ cd drupal/project/site
$ find . -name "composer.json" -exec rm -rf {} \;
$ find . -name "composer.lock" -exec rm -rf {} \;
$ find . -name "vendor" -exec rm -rf {} \;
Vytvořte nový soubor composer.json podle následující šablony:
{
"name": "drupalprojem",
"license": "proprietary",
"type": "project",
"repositories": {
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8"
},
"asset-packagist": {
"type": "composer",
"url": "https://asset-packagist.org"
}
},
"require": {
"composer/installers": "^1.2.0",
"cweagans/composer-patches": "^1.6.4",
"drupal/composerize": "1.x-dev",
"drupal-composer/drupal-scaffold": "^2.4",
"oomphinc/composer-installers-extender": "^1.1",
"wikimedia/composer-merge-plugin": "^1.4.1"
},
"require-dev": {
"drupal/console": "^1.0.2",
"drush/drush": "^9.0.0"
},
"extra": {
"enable-patching": true,
"installer-types": ["bower-asset", "npm-asset"],
"installer-paths": {
"docroot/core": ["type:drupal-core"],
"docroot/modules/contrib/{$name}": ["type:drupal-module"],
"docroot/modules/custom/{$name}": ["type:drupal-custom-module"],
"docroot/profiles/contrib/{$name}": ["type:drupal-profile"],
"docroot/profiles/custom/{$name}": ["type:drupal-custom-profile"],
"docroot/themes/contrib/{$name}": ["type:drupal-theme"],
"docroot/themes/custom/{$name}": ["type:drupal-custom-theme"],
"docroot/libraries/{$name}": ["type:drupal-library", "type:bower-asset", "type:npm-asset"],
"drush/contrib/{$name}": ["type:drupal-drush"],
"special/package/dir/": ["my/package"]
},
"merge-plugin": {
"include": [
"docroot/modules/custom/*/composer.json"
],
"replace": false,
"ignore-duplicates": true
},
"patches": {}
},
"minimum-stability": "dev",
"prefer-stable": true
}
Nyní máte funkční soubor composer.json, který pohodlně vyžaduje jádro Drupalu a různé pluginy potřebné k správě webu Drupalu pomocí Composeru.
Nyní můžete instalovat moduly, témata, profily atd. s Composerem. Jedná se o manuální proces, který vyžaduje vaši kontrolu.
Chcete-li do projektu přidat další moduly, použijte příkaz composer require drupal/[název-modulu]. Tímto způsobem nainstalujete novou stabilní verzi nebo upgradujete verzi, pokud je již nainstalována. Chcete-li specifikovat verzi, můžete to udělat pomocí příkazu composer require drupal/[název-modulu] [verze].
Spusťte tento příkaz pro všechny contrib moduly Drupalu. Můžete jej také spustit k instalaci dalších modulů. Všechny nainstalované moduly můžete zobrazit pomocí nástroje Drush. Drush musí být nainstalován v lokální oblasti. Drush se dotazuje databáze Drupalu a zobrazuje nainstalované moduly:
$ ./vendor/bin/drush pml --no-core --status=enabled
---------------- --------------------------------------- --------- ----------------
Package Name Status Version
---------------- --------------------------------------- --------- ----------------
Administration Admin Toolbar (admin_toolbar) Enabled 8.x-1.27
---------------- --------------------------------------- --------- ----------------
Pro optimální standardní práci smažeme příspěvkové moduly z verzovacího systému (git).
Přidejte následující řádky do nového .gitignore souboru nebo do existujícího .gitignore souboru:
docroot/core
docroot/modules/contrib
docroot/themes/contrib
docroot/profiles/contrib
docroot/libraries
Po přidání těchto řádků smažte následující soubory z verzovacího systému:
git rm --cached docroot/core
git rm --cached docroot/modules/contrib
git rm --cached docroot/themes/contrib
git rm --cached docroot/profiles/contrib
git rm --cached docroot/libraries
git rm --cached vendor
Když spustíte tyto příkazy, může se objevit chyba "fatal: pathspec 'vendor' did not match any files," protože tyto soubory nejsou ve složce. To je normální.
Tím jsme změnili projekt Drupal, který nebyl vytvořen s Composerem, na strukturu vytvořenou pomocí Composeru.
Vytváření nového projektu v Drupalu s pomocí Composeru
Pro instalaci balíčku Drupalu nejprve spusťte následující příkaz pomocí výše uvedeného šablony composer.json. Alespoň soubor composer.json by měl obsahovat položku repositories a konfiguraci installer-paths.
$ composer require drupal/[proje]
Například pro instalaci modulu pathauto:
$ composer require drupal/pathauto
Výchozím způsobem se instaluje nejnovější verze, abyste nainstalovali konkrétní verzi:
$ composer require drupal/pathauto 1.0.0
Tento příkaz může vyvolat chybu, pokud závislosti jiných modulů nejsou kompatibilní. V takovém případě můžete instalaci dokončit tím, že změníte verzi, dokud nejsou závislosti splněny, nebo můžete nainstalovat nejnovější verzi. Také v jazyce Composer znamená "install" nainstalovat kód, aktualizovat soubor composer.lock a umožnit přístup kódu s autoloaderem. Stále je však nutné nainstalovat Drupal projekt prostřednictvím rozhraní nebo s nástrojem Drush do databáze Drupalu.
Pro aktualizaci libovolného modulu:
composer update [vendor]/[package]
Například pro aktualizaci drupal/pathauto:
$ composer update drupal/pathauto
Aktualizuje pouze modul drupal/pathauto, i když je závislým modulem tohoto modulu.
Pro aktualizaci modulu s jeho závislými moduly:
$ composer update drupal/pathauto --with-all-dependencies
Pro aktualizaci s určením minimální verze:
$ composer require drupal/pathauto:^1.1.0 --update-with-all-dependencies
Pro aktualizaci všech modulů:
$ composer update
Stejně jako při aktualizaci jakéhokoli projektu Drupalu, byste měli provést aktualizace databáze po stažení nového modulu. Pokud používáte Správu konfigurace Drupalu, měli byste znovu exportovat konfigurace po aktualizaci databáze.
Jádro Drupalu lze aktualizovat pomocí Composeru stejně jako jakýkoli jiný modul. Jak je uvedeno výše, můžete aktualizovat drupal/core tím, že místo názvu modulu zadáte drupal/core a spustíte příkazy. Je dobrý nápad nastavit novou minimální verzi pro drupal/core, aby nedošlo k neúmyslnému snížení verze.
Stejně jako při aktualizaci jakéhokoli projektu Drupalu, byste měli provést aktualizace databáze po stažení nového modulu.
Představte si, že existuje modul, který jsme nainstalovali bez Composeru. Jak nainstalujeme závislosti uvedené v souboru composer.json tohoto modulu? Pokud se ptáte na tuto otázku, jste ve skutečnosti na nesprávné cestě. Nejprve musíte použít Composer k řízení celého projektu Drupalu a modul nainstalovat pomocí Composeru. Poté budou jeho závislosti automaticky nainstalovány. Jako alternativu k používání Composeru můžete v případě, že modul podporuje Ludwig, použít Ludwig Ludwig, k instalaci závislostí modulu.