2013-06-11 26 views
20

Bir PHP kitaplığı yayınlamak veadresine Composer aracılığıyla kurulabilmesini sağlamak istiyorum.Besteci ile dizinleri nasıl yok sayılır?

Benim kütüphane aşağıdaki yapıya sahiptir: Temelde

lib/ 
tests/ 
composer.json 
README.md 

, bir proje en composer.json bu kütüphane zaman, ben zahmetlidir ve tests dizinin hariç, kopyalanacak her şeyi istiyorum sadece kütüphanenin kendisi geliştirilirken gereklidir. Bu, aksi takdirde (özellikle üretim için projeyi ambalajlarken) boş alan kaybıdır.

Bu dizini kitaplığın composer.json dışlamadan çıkarmak mümkün mü?

cevap

22

Bu, Besteci'de mümkün değildir. Ancak, bunu yapmak için bazı yolları vardır: Eğer güncellemeyi çalıştırmak veya --prefer-dist ile komutu yüklediğinizde

  • , Besteci github arşivi indirmek çalışır. Eğer projenin kök dizininde bir .gitattributes dosyada bu koyarak arşivlerinden Test dizini kaldırabilirsiniz:

    Tests/ export-ignore 
    
  • Besteci sadece github etiketleri kullanır. Bir etiket oluştururken test dizinini geçici olarak kaldırmanız da hile yapacaktır.

+0

Mükemmel, teşekkürler. '.gitattributes' çözümü ümit verici görünüyor. Yine de, ZIP'i varsayılan davranış olan GitHub'dan indirmiyor mu? – Benjamin

+0

@Benjamin no, bir etiketi koddan indirir, zip dosyasını değil. Zip'i almak için 'ppferfer-dist 'kullanmanız gerekir (anser'de yanlış anahtar kullanılır, bilinir) –

+9

Aslında [bu sayfa] (http://getcomposer.org/doc/03-cli.md) diyor ki : * Stabil versiyonlar için besteci 'dist'i varsayılan olarak kullanır. * – Benjamin

1

Bu https://getcomposer.org/doc/04-schema.md#exclude-files-from-classmaps

Kaynak ile Nov 11 2015 yılından bu yana mümkün olmuştur: https://github.com/composer/composer/issues/4456#issuecomment-155825777

DÜZENLEME: Yanlış. Yukarıdakiler sadece otomatik yükleyicinin belirtilen yolları göz ardı etmesine izin verir, gerçekte bunların yüklendikten sonra dosya sistemine kopyalanmasını engellemez.

+1

İşaretçi için teşekkürler!Cevabınızı kabul edildi olarak işaretlemek üzereydim, ancak dokümanı okuduktan sonra, bunun sadece otomatik yükleyiciden gelen dosyaları hariç tutması gibi görünüyor: arşivde hala var olacaklar. Bu kesinlikle bir ilk adımdır, ancak nihai hedefim, Composer'dan yüklerken test dosyalarını tamamen kaldırarak arşiv boyutunu azaltmaktı. – Benjamin

+1

Oh Üzgünüm bu durumda soruyu yanlış yorumladım :) Bower'daki "göz ardı etme" seçeneği gibi bir şey istiyorsanız (ihmal [dizi]: Üretimde ihtiyaç duyulmayan, Bower'ın paketinizi yüklerken göz ardı etmesini istediğiniz bir dizi yol.) - Ben besteci bu özelliği farkında değilim - https://github.com/composer/composer/issues üzerinde bir özellik isteği oluşturdunuz mu? – Motin

1

archive anahtarında composer.json dosyasında dışlama desenleri ekleyerek arşiv oluşturmayı denetlemek mümkündür. Detaylar için bakınız https://getcomposer.org/doc/04-schema.md#archive.

(URL yukarıdan alınmıştır) verilen örnek:

{ 
    "archive": { 
     "exclude": ["/foo/bar", "baz", "/*.test", "!/foo/bar/baz"] 
    } 
} 

örneğin /dir/foo/bar/file, /foo/bar/baz, /file.php, /foo/my.test içerir ama /foo/bar/any, /foo/baz ve /my.test hariç tutar.

Eğer .gitattributes Git kullanmak zorunda veya farklı ayarlar gerektiren tüm işlemleri etkilemeden, sana vereceğini aynı kontrolü hakkında aynı olur dosyasını söyledi.

+0

Teşekkürler, bağlandığınız paragrafı okudum, ancak anlayamıyorum * bu * hangi hedefleri arşivliyor: Bildiğim kadarıyla, Paketleyici, paket arşivlerini barındırmıyor; Bunun yerine Composer paketleri ya git repo'yu klonlayarak ya da bir ZIP arşivinden (genellikle tahmin ettiğim GitHub'dan, sadece .gitattributes'ı değil, composer.json'u izler) paketler. Composer hala bunu yapıyor mu, sonuç olarak hariç tutulan dosyaları yerel olarak siler mi? – Benjamin

+0

Çok güzel bir soru, araştıracağım. Elbette bu ayar, Satis çalışması sırasında paketlerin oluşturulmasını etkiler. Paketleri Github'dan indirme konusunda emin değilim. – Sven

İlgili konular