Sorun
composer
süper bir araç. Hayatımızın her alanında kullanmak istiyoruz. Artık marketten bira istediğimde ben istemeden yanında cips ve sigara vermesini de bekliyorum (en azından benim için required
). Neyse kısaca bu yazımda sizlere süper gizli, şirket dışına çıkmaması gereken kodlarımızı private (özel) depolarımızla beraber composer’da nasıl kullanacağımızı anlatacağım.
Let the game begin
Böyle bir işe girişecekseniz bilgisayarınızda composer vardır. O yüzden onu atlıyorum. Şimdi öncelikle, bu işleri satis
denen bir nane ile hallediyoruz. Bir satis projesi yaratmamız gerekiyor
composer.phar create-project composer/satis --stability=dev
Güzel!! Projemiz hazır. Şimdi dünyaya açmak istemediğiniz şirket depolarımızı ekleyeceğiz.
Satis konfigurasyon dosyası
satis
‘in ne işler çevirmesi gerektiğini anlatan bir konfigürasyon dosyası hazırlamalıyız. Buna herhangi bir isim verebilirsiniz, ama ben buna satis.json
diyeceğim.
satis.json:
{
"name": "Bizim Depo",
"homepage": "http://paketler.sirket.com",
"repositories": [
{ "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo" },
{ "type": "vcs", "url": "http://svn.sirket.org/private/depo" },
{ "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo2" }
],
"require-all": true
}
Burada gördüğümüz require-all
bu depolardaki tüm versiyonları kullan anlamına geliyor. İsterseniz tek tek istediğiniz versiyonları burada seçtirebilirsiniz. İstediğiniz versiyonların composer tarafından görülmesini engelleyebilirsiniz. Mesela;
{
"name": "Bizim Depo",
"homepage": "http://paketler.sirket.com",
"repositories": [
{ "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo" },
{ "type": "vcs", "url": "http://svn.sirket.org/private/depo" },
{ "type": "vcs", "url": "http://github.com/bizim_sirket/privatedepo2" }
],
"require": {
"taciroglu_yazilim/paket": "*",
"taciroglu_yazilim/paket2": "*",
"taciroglu_yazilim/kisa_winston": "2.0.0"
}
}
Anlaşılabileceği gibi burada tüm versiyonları istiyorsak *
kullanıyoruz. Spesifik olarakta versiyonları belirtebiliyoruz.
Bu konuda anlaştıysak bu konfigurasyon dosyasını çalıştırmamız gerekiyor. İşte komut:
php bin/satis build <konfigurasyon dosyasi> <build dir>
Mesela:
php bin/satis build satis.json web/
Burada yaptığımız konfigurasyonlarla oluşan olaylar web
klasörü altına gidecek.
Bu komutu bir cronjob olarak sunucunuza ekleyebilirsiniz ve paketlerinizin sürekli güncel kalmasını sağlayabilirsiniz. Veya kullandığınız VCS sağlayıcısına göre post-hook tarzı birşey ekleyebilirsiniz.
satis
bize bir web uygulaması yarattı. Şimdi ben bu web uygulamasını çalıştıracağım.
En basitinden php
‘nin development server’ını kullanacağım. (PHP 5.4 ve üstünü ister). Siz çabalayıp Apache, nginx gibi birşeyler de kullanabilirsiniz.
php -S localhost:8000 -t web/
Tamamdır. Browser üzerinden localhost:8000
diye girebilirsiniz.
Kullanım
Paketlerimizi paketler.sirket.com
içine atmıştık. Şimdi bunu composer.json
dosyamda belirteceğim;
{
"repositories": [ { "type": "composer", "url": "http://paketler.sirket.com/" } ],
"require": {
"taciroglu_yazilim/paket": "1.2.0",
"taciroglu_yazilim/paket2": "3.2-dev",
"taciroglu_yazilim/kisa_winston": "dev-master"
}
}
Bu kadar
Daha detaylı için satis dökümantasyonuna bir bakabilirsiniz.