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-project
Daha 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/libraries
Ekledikten 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/pathauto
Varsayılan olarak bu en son sürümü kurar, spesifik versiyonu kurmak için:
$ composer require drupal/pathauto 1.0.0
Bu 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/pathauto
Bu 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-dependencies
Minimum versiyonu belirterek güncellemek için:
$ composer require drupal/pathauto:^1.1.0 --update-with-all-dependencies
Bütün modulleri güncellemek için:
$ composer update
Herhangi 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.
GOSB Teknopark Hi-Tech Bina 3.Kat B3 Gebze - KOCAELİ