için bir paket geliştiriyorum - bir paket geliştiriyorum - myvendor/mylib
- muhtemelen Packagist aracılığıyla Composer kullanarak dağıtmayı planlıyorum. Bu paket, diğer şeylerin yanısıra, bin/console.php
numaralı bir komut dosyası olan ve mylib
paketini içe aktaran myvendor/mymain
numaralı projeye sunmak istiyorum.Bağımlılıktaki komut dosyası, Composer autoloader
Ben kutuları bir dizi composer.json
bir config
ayar ithal etmek mylib
pakette belirtebilirsiniz farkındayım:
{
"name": "myvendor/mylib",
"config" : {
"bin" : ["bin/console.php"]
}
}
mymain
proje besteci/güncelleme yüklemek geldiğinde, o zaman bu mylib/bin/console.php
olduğunu Ayrıca mymain/bin/console.php
olarak sembolik olarak, ben mymain
proje belirtebilirsiniz farkındayım - kendi içinde composer.json
-o bağımlılık kutuları sembolik olarak bağlanmış istediği yere:
{
"name": "myvendor/mymain",
"config": {
"bin-dir": "scripts"
}
}
Bu durumda, konsol komut dosyası scripts/console.php
olarak simgelenir. Bu, iyi çalışıyor - ve her şey yolunda çıktığı kadar güzel, bu arada. Ancak, bin/console.php
komut dosyasının kendisi, Composer tarafından oluşturulan vendor/autoloader.php
'un içeriklerini içermelidir. bin/console.php
betiği, mylib
bağımsız olarak geliştirilirken, vendor/autoloader.php
'a göre kendi konumunu bilir ve kolayca dahil edebilir. Ama bir kez başka bir projeye bağımlılık olarak alındığında - bu durumda myvendor/mymain
- o zaman sadece mymain/vendor/autoloader.php
betiği var. Prensip olarak, konsol betiği o autoloader betiğine göre nerede bulunduğunu bilemez.
Composer, konsol betiğine - komut dosyasının doğru vendor/autoloader.php
komut dosyasını bulmasını sağlayan bazı ortam değişkenleri sağlıyor mu?
BTW: Composer CLI environment variable farkındayım, bu yüzden ben bir ithal proje gereksinimi yapabilir hayal - mymain
- tanımlamak var COMPOSER_VENDOR_DIR
(ve ihracat!). Sonra konsol komutum, projenin otomatik yükleyicisini bulmak için bunu kullanabilir.
Biz ayar yalnızca için bu projeyi uygulamak istiyoruz ama bir kabuk var (ve bir ihracat) o kabuk oturumu erişilen tüm projeler için geçerli olacaktır: Ama o potansiyel sorunlu görünüyor. Bir bağımlılık projesine empoze etmek için benim küçük bağımlılığım -
myvendor/mylib
- küstah gibi görünüyor. Prensipte, bağımlılığın kendisi -myvendor/mylib
- neye ihtiyacı olduğunu bulabilmelidir. İthalatçıya onus koymak doğru görünmüyor.
WDYT? Şimdiden teşekkürler. Fikirler hoşgeldin.
Gerçekten yinelemenize gerek yok, yalnızca iki tane dirsekle karşılaşabilirsiniz çünkü bu,// –
Seldaek
@Seldaek: Doğru, nihayet [jsonlint] öğesinden (https: //) örneğinizi anladım. github.com/Seldaek/jsonlint/blob/master/bin/jsonlint) ve bu şekilde uygulandı. Teşekkürler mucho! –
İnsanların hala bununla ilgili sorunlar yaşıyor gibi görünüyor (me!) Burada bir cevap bulundu: http://stackoverflow.com/questions/35271282/how-can-i-provide-a-script-for-php-cli-via -composer-olarak-başına-ve-Bağıl olarak- – VladFr