
Bu yazıda aşağıdaki konuyu inceleyeceğiz:
Bu yazının sonunda Composer ile Drupal modülleri ve temalarını kurmayı ve güncellemeyi öğrenmiş olursunuz.
Composer tabanlı Drupal projesi oluşturmak ve Drupal modül ve tema kurulumu.
Composer'in en son sürünümü.
composer self-update komutu ile Composer'i güncelleyebilirsiniz.
composer.json dosyasını oluşturunuz.Composer ile Drupal projesini oluşturmanın en kolay yolu şablon kullanmaktır. Composer'in create-project komutunu bunun için kullanacağız. composer create-project some/project komutunu çalıştırdığınızda bu komut some/project şablonunu klonlayarak yeni projenizi oluşturur.
Sizin projeniz some/project tabanlı proje olacak. Örneğin, some/project'teki composer.json dosyası oluşturduğunuz projenin başlangıcı olacak. Bundan sonra some/project projesi sizin projenize her hangi bir etkisi olmayacak.
Drupal.org sitesinden bazı popüler Composer ile Drupal projesi oluşturma şablonu bulabilirsiniz.
NOT: drupal/drupal projesi kullanımdan kaldırılmıştır ve tavsiye edimemektedir.
Bu yazı'da en çok tavsiye edilen ve çok kullanılan drupal-composer/drupal-project projesini kullanacağız. Bu şablon Composer ile Drupal projesi geliştirmemiz için yeterli konfigürasyon sağlamaktadır.
drupal-composer/drupal-project şablonunu kullanarak Drupal projesi geliştirmek için aşağıdaki komutu çalıştıralım:
$ composer create-project drupal-composer/drupal-project:8.x-dev my-project --stability dev --no-interaction
$ cd my-projectDaha fazla bilgi için drupal-composer/drupal-project projesinin dokümantasyonuna bakabilirsiniz.
Mevcut bir Drupal uygulamasını yönetmek için Composer'ı kullanmaya başlayalım
Composer ile yönetilmeyen bir Drupal projesini Composer ile yönetmeye başlamak başta biraz zor gelebilir. Drupal projesini Composer ile yönetmenin tam yöntemi Drupal uygulamasının klasör yapısına bağlı ve bazı ek adım gerektirebilir.
Drupal projesini Composer yapısına çevirme süreçini otomatikleştiren çok sayıda araç var:
composerize komutu.Eğer yukarıdaki araçlarla başarısız olsanız aşağıdaki adımlarla yapabilirsiniz.
.git klasörü olan klasöre terminal ile geçin. Komutları doğru dizinden yürütmeniz son derece önemlidir. Bazı projeler için, klasör doğrudan Drupal projesini içerebilir. Diğer projelerde Drupal projesi docroot/core ve web/core altında olabilir.composer.json dosyasını ve vendor klasörünü siliniz. Projenizde sadece bir tane composer.json dosyası ve vendor klasörü olmalıdır. Eğer eski veya kullanılmayan composer.json veya vendor klasörü varsa projeden siliniz.$ cd drupal/projesinin/yeri
$ find . -name "composer.json" -exec rm -rf {} \;
$ find . -name "composer.lock" -exec rm -rf {} \;
$ find . -name "vendor" -exec rm -rf {} \;Aşağıdakileri şablonu kullanarak yeni bir composer.json dosyası oluşturun:
{
"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
}composer require drupal/core 8.6.0 komutu ile projenize Drupal Core ekleyiniz.
Artık, uygun bir şekilde Drupal Core ve bir Drupal sitesini Composer ile yönetmek için gereken çeşitli eklentiler gerektiren işlevsel bir composer.json dosyanız var.
Şimdi Composer ile module, tema, profil ve benzerlerini kurabilirsiniz. Bu, gözden geçirmenizi gerektiren manuel bir işlemdir.
Projeye diğer modullerini eklemek için composer require drupal/[modul-ismi]. Bu yeni stabil versiyonu yükler veya önce kurulu ise versiyonunu yükseltir. Eğer versionu belirtmek isteseniz bunu composer require drupal/[modul-ismi] [versiyon] komutu ile gerçekleştirebilirsiniz.
Bu komutu Drupalın bütün contrib modulu için çalıştırınız. Ayrıca diğer modulleri kurmak için çalıştırabilirsiniz. drush ile kurulan bütün modulleri listeleyebilirsiniz. Drush lokalinizde kurulu olması gerek. Drush Drupalın veritabanın sorgular ve kurulan modulleri listeler:
$ ./vendor/bin/drush pml --no-core --status=enabled
---------------- --------------------------------------- --------- ----------------
Package Name Status Version
---------------- --------------------------------------- --------- ----------------
Administration Admin Toolbar (admin_toolbar) Enabled 8.x-1.27
---------------- --------------------------------------- --------- ----------------En iyi standard çalışma gereği contrib modullerini versiyon kontrol'den (git) silelim.
Yeni bir .gitignore veya var olan .gitignore dosyasına aşağıdaki satırları ekleyelim:
docroot/core
docroot/modules/contrib
docroot/themes/contrib
docroot/profiles/contrib
docroot/librariesEkledikten sonra aşağıdaki dosyaları versiyon kontrol'den silelim:
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
Bu komutları çalıştırdığınız fatal: pathspec 'vendor' did not match any files hatası vermesiniz sebebi bu dosyaların klasör'de olmayışı. Bu normaldir.
Böylece Composer ile oluşturulmayan Drupal projesini Composer yapısına değiştirmiş olduk.
Composer ile Yeni Drupal Projesi Oluşturma
Drupal paketini kurmak için ilk önce yukarıdaki composer.json şablonu kullanarak aşağıdaki komutu çalıştırınız. En azından composer.json dosyasında repositories entry ve installer-paths konfigürasyonu olmalıdır.
$ composer require drupal/[proje]Örneğin pathauto modulunu kurmak için:
$ composer require drupal/pathautoVarsayılan olarak bu en son sürümü kurar, spesifik versiyonu kurmak için:
$ composer require drupal/pathauto 1.0.0Bu komut hata verebilir eğer başka modullerin bağımlılığı uymuyorsa, bu durumda uyuyana kadar versiyonu değiştirerek kurabilirsiniz yada en son sürümü kurabilirisiniz. Ayrıca Composer dilinde "install" demek kodları yüklemek, composer.lock dosyasını güncellemek ve autoloader ile kodu kullanılabilir hale getirebilmek demektir. Yine de Drupal projesini arayüzden yada Drush ile Drupal veritabanına kurmanız gerekiyor.
Herhangi bir modulu güncellemek için:
composer update [vendor]/[package]Örneğin drupal/pathauto güncellemek için:
$ composer update drupal/pathautoBu sadece drupal/pathauto modulunu günceller, ne kadar bu modulun bağımlı modulu olsa bile.
Bağımlı modulleri ile birlikte modulu güncellemek için:
$ composer update drupal/pathauto --with-all-dependenciesMinimum versiyonu belirterek güncellemek için:
$ composer require drupal/pathauto:^1.1.0 --update-with-all-dependenciesBütün modulleri güncellemek için:
$ composer updateHerhangi bir Drupal projesini güncellerken olduğu gibi, yeni modulu indirdikten sonra veritabanı güncellemelerini gerçekleştirmelisiniz. Eğer Drupal Configuration Management kullanıyorsanız veritabanı güncellemeleri sonrası konfigürasyonları yeniden export etmelisiniz.
Drupal Core diğer moduller gibi Composer ile güncellenebilir. Yukarıdaki adımlarda olduğu gibi modul ismi yerine drupal/core belirterek komutları çalıştırarak güncelleyebilirsiniz. drupal/core için yeni bir minimum sürüm belirlemek iyi bir fikirdir, böylece bir düşürme işlemi asla yanlışlıkla gerçekleştirilmez.
Herhangi bir Drupal projesini güncellerken olduğu gibi, yeni modulu indirdikten sonra veritabanı güncellemelerini gerçekleştirmelisiniz.
Diyelim ki Composer ile kurmadığımız bir modül var. Bu modülün composer.json dosyasında listelenen bağımlılıkları nasıl kurarız? Bu soruyu soruyorsanız, aslında yanlış yoldasınız. Önce tüm Drupal projesini yönetmek için Composer'ı kullanmalı ve modülü Composer ile kurmalısınız. O zaman, bağımlılıkları sizin için otomatik olarak kurulacak.
Composer'ı kullanmaya alternatif olarak, eğer modül Ludwig'i destekliyorsa modülün bağımlılıklarını kurmak için Ludwig'i kullanabilirsiniz.