Ana Sayfa

Bun'ı Bağımlılıkları Olmadan Derleme Macerası

1 dk okuma

Bu makale, JavaScript toolkit'i Bun'ı, kendi binary bağımlılıklarına (yani kendisine) başvurmadan inşa etme sürecini anlatıyor. Yazar, OpenCode adlı LLM destekli kodlama aracını kurmaya çalışırken Bun'ın kendi dağıtımında bulunmadığını ve Arch Linux paketinin de güncel olmadığını fark ediyor. Bu durum, Bun'ın nasıl derlendiğine dair net bir belgenin eksikliğini ortaya çıkarıyor; zira derleme süreci, önceden derlenmiş bir Bun CLI'ının varlığını varsayıyor. Geliştirme Docker dosyaları ve CI betikleri de genellikle önceki bir sürümden binary indiriyor.

Yazar, açık kaynaklı GitHub Actions tarafından derlenen binary'lere güvendiğini ancak kendi veya dağıtımının paketleyicileri tarafından imzalanan paketlere daha fazla güvendiğini belirtiyor. Bu nedenle, Bun'ı kendisi derlemeye karar veriyor. İlk adım olarak, Node.js kullanarak bir 'bun-wrapper' betiği oluşturuyor. Bu betik, Bun'ın hangi komutları çağırdığını ve hangi araçlara bağımlı olduğunu tespit etmeye yarıyor. Ancak, betik tek başına yeterli olmuyor ve yazar, derleme betiklerini daha yakından inceleyerek Bun'ın üç ana rolde kullanıldığını anlıyor: paket yöneticisi, TypeScript çalışma zamanı (runtime) ve paketleyicisi (bundler).

Sonrasında, bu roller için alternatif araçlar bularak Bun'ın derleme sürecini yeniden yapılandırıyor. npm bağımlılıklarını kurmak için Bun'ın paket.json dosyasındaki 'workspace:<ver>' gibi belirticileri, Node.js ve npm ile uyumlu hale getiriyor. TypeScript çalışma zamanı ihtiyacını Node.js ile karşılarken, paketleme ihtiyacını da başka araçlarla gideriyor. Bu süreçte, başlangıçta kullandığı wrapper betiğini bırakıp, alternatif araçları doğrudan çağıracak veya CMake tanımlarını değiştirerek Bun yerine kullanacak şekilde derleme betiklerini modifiye ediyor. Sonuç olarak, Bun'ı herhangi bir önceden derlenmiş binary'ye ihtiyaç duymadan başarıyla derlemeyi başarıyor.

İçgörü

Bun'ın derleme sürecini, kendi binary'lerine ihtiyaç duymadan alternatif araçlarla yeniden yapılandırmak, açık kaynak projelerin bağımsız derlenebilirliğini ve topluluk tarafından daha kolay benimsenmesini sağlıyor.

Kaynak