Kilit dosyaları ve yeniden üretilebilir derlemeler: her yerde aynı sürümler
Kısaca: Bir kilit dosyası (lockfile), tüm paketlerin kurulu tam sürümlerini kaydeder; böylece geliştirme, CI ve üretim aynı durumu kullanır ve derlemeler yeniden üretilebilir kalır.
Biraz daha ayrıntılı: package.json içinde "express": "^4.18.0" yazar; bu “4.18.0 veya daha yeni 4.x” demektir. Başka önlem olmadan her makine zamana bağlı olarak farklı sürümler kurar: “bende çalışıyor” bir soruna dönüşür. Kilit dosyası bunu çözer.
Ayrıntılı
İçinde ne var?
Bir kilit dosyası tüm doğrudan ve geçişli (transitive) bağımlılıkları tam sürüm, sağlama toplamı (hash) ve kaynakla içerir. Örnekler: package-lock.json (npm), pnpm-lock.yaml, yarn.lock, Cargo.lock (Rust), poetry.lock/uv.lock (Python), Gemfile.lock, composer.lock, go.sum. Araç tarafından üretilir, elle düzenlenmez.
Doğru kullanmak
- Kilit dosyasını depoya işleyin (uygulamalar için; kütüphaneler için kurala bağlı, CI için mantıklı).
- CI ve dağıtımda kilit dosyasıyla kurun:
npm ci(npm installyerine),pip install -r requirements.txt --require-hashes,cargo build --locked. Kilit dosyası ilepackage.jsonuyuşmuyorsanpm cidurur. - Güncellemeleri bilinçli yapın (
npm update, Dependabot/Renovate), kilit dosyasındaki değişiklikleri çekme isteğinde inceleyin. - Kilit dosyasındaki birleştirme çakışmaları: elle birleştirmeyin;
package.json’u çözün ve kilit dosyasının yeniden üretilmesine izin verin.
Yeniden üretilebilir derlemeler
Hedef: aynı girdiler → aynı sonuç (bit bit). Bunun için: kilit dosyaları, sabitlenmiş araç sürümleri (.nvmrc, .tool-versions, engines), sabit temel imajlı konteynerler (latest yerine özet/digest), derlemede zaman damgası yok, deterministik sıralama. Bu, sorun gidermeyi, geri almaları, güvenlik denetimlerini (SBOM, imzalar) ve yayımlanmış bir artifact’in kaynak koduyla eşleştiği güvenini kolaylaştırır.
Güvenlik
Özetli (hash) kilit dosyaları, bir paketin sonradan değiştirilmesine karşı korur. Çekme isteklerinde değiştirilmiş kilit dosyalarını denetleyin (farklı kayıt defteri URL’si). Denetim için özel kayıt defterleri/vekil sunucular (Artifactory, Verdaccio) kullanın. Açık ad alanları (scopes) ve kayıt defteri yapılandırmasıyla bağımlılık karışıklığından kaçınırsınız.
Ayrıca bak: Anlamsal sürümleme, Dependabot ve Renovate, Bağımlılıklar ve kütüphaneler