Skip to content

Hook'lar

Varsayılan olarak, Volta Node, npm ve Yarn'i genel kaynaklardan ve kayıt defterlerinden getirir (https://nodejs.org, https://yarnpkg.com, https://www.npmjs.com). Ancak, ortamınıza bağlı olarak, Volta'ya farklı bir kaynaktan indirmesini söylemek gerekli olabilir (ör. iç araçlar için npm Enterprise). Buna uyum sağlamak için Volta, indirme sürecine hook'lar sağlar.

Hook'ların belirtilacağı yer

Hook'lar her zaman hooks.json adlı bir dosyada ayarlanır. Bu dosya, bu hook'ların hangi kapsamda uygulanmasını istediğinize bağlı olarak iki yerden birinde olabilir:

  • Volta dizininde belirtilen hook'lar (Linux/MacOS'ta ~/.volta/hooks.json, Windows'ta %LOCALAPPDATA%\Volta\hooks.json) tüm sistem genelinde geçerli olacaktır.
  • Bir projenin .volta alt dizininde belirtilen hook'lar (<PROJE KÖKÜ>/.volta/hooks.json) yalnızca o proje içinde geçerli olacaktır. Burada <PROJE KÖKÜ>, o projenin package.json dosyasının konumu olarak tanımlanır.

Hook'lar dosya formatı

hooks.json dosyasının içeriği bir nesne olmalıdır ve her araç türü için (şu anda node, npm ve yarn) isteğe bağlı anahtarlara sahip olmalıdır. Her aracın, her birine hook uygulanabilen 3 eylemi vardır:

  • index - O araç için indirilebilecek sürümler listesini belirlemek için kullanılan URL'yi temsil eder. Bu URL'ye erişildiğinde döndürülen yanıt, seçilen araç için genel dizinlerin formatıyla eşleşmelidir.
  • latest - O aracın en son sürümünü belirlemek için kullanılan URL'yi temsil eder. node için, yanıt index ile aynı formatta olmalı ve en son sürümün listede ilk öğe olduğundan emin olunmalıdır. yarn için, yanıt sadece ham sürüm numarası dizesi olmalıdır.
  • distro - Araç ikili dosyalarını indirmek için kullanılan URL'yi temsil eder.

Son olarak, her eylemin kullanılabilecek 3 olası hook'u vardır (aşağıda açıklanmıştır) (herhangi bir zamanda her eylem için yalnızca biri belirtilebilir). Örnek bir hooks.json dosyası:

json
{
    "node": {
        "index": {
            "bin": "/usr/local/node-lookup"
        },
        "latest": {
            "prefix": "http://example.com/node/"
        },
        "distro": {
            "template": "http://example.com/{{os}}/{{arch}}/node-{{version}}.tar.gz"
        }
    },
    "npm": {
        "index": {
            "prefix": "http://example.com/npm/"
        },
        "latest": {
            "bin": "~/npm-latest"
        },
        "distro": {
            "template": "http://example.com/npm/npm-{{version}}.tgz"
        }
    },
    "yarn": {
        "index": {
            "template": "http://example.com/yarn/{{os}}/{{arch}}/yarn-{{version}}.tgz"
        },
        "latest": {
            "prefix": "http://example.com/yarnpkg/"
        },
        "distro": {
            "bin": "~/yarn-distro"
        }
    }
}

Hook türleri

prefix Hook'ları

prefix hook'u, basit bir URL değiştirme işlemidir. URL, belirtilen önek kullanılarak ve ardından o eylem için genel dosya adı eklenerek oluşturulacaktır. Örneğin, yukarıdaki hooks.json'u kullanarak, en son yarn sürümünü belirlemek için bir prefix hook'u belirtilmiştir. Varsayılan olarak, Volta en son sürümü https://yarnpkg.com/latest-version adresine istek yaparak getirir. Hook kullanılarak, Volta bunun yerine http://example.com/yarnpkg/latest-version adresine erişmeye çalışacaktır; latest-version ifadesini http://example.com/yarnpkg/ önekine ekleyecektir.

template Hook'ları

template hook'u, değiştirilecek joker karakterlerle bir URL için şablon belirtmenize olanak tanır. Kullanılabilir joker karakterler:

  • - İşletim sistemine bağlı olarak darwin, linux veya win ile değiştirilecektir.
  • - Sistemin mimarisine bağlı olarak x86 veya x64 ile değiştirilecektir.
  • (Yalnızca distro eylemleri için kullanılabilir) - Volta'nın indirmeye çalıştığı aracın belirli sürümü ile değiştirilecektir.
  • - Volta'nın genel kayıt defterinden indireceği dosyanın dosya adı ile değiştirilecektir.
  • (Yalnızca distro eylemleri için kullanılabilir) - Volta'nın indirmeyi beklediği dosya uzantısı ile değiştirilecektir.

TIP

filename ve ext değiştirmeleri yalnızca Volta 0.8.4 veya sonraki sürümlerde kullanılabilir

Yukarıdaki örnekteki node.distro hook'unu kullanarak, 64 bitlik bir Linux sisteminde node@10.15.3 getirilirken, Volta tarball'u şu adresten indirmeye çalışacaktır: http://example.com/linux/x64/node-10.15.3.tar.gz

bin Hook'ları

bin hook'u, URL'yi belirlemek için harici bir betiği çağıracak çok amaçlı bir hook'tur. Değer, çağrılacak çalıştırılabilir betiğin yoludur ve URL, o betiğin stdout çıktısından okunacaktır. Betiğin stderr çıktısı kullanıcıya gösterilecektir, böylece istenirse ilerleme çubukları veya bekleme göstergeleri göstermek için kullanılabilir. Betiğin yolu göreli ise, belirtildiği hooks.json dosyasına göreli olarak çözümlenecektir. Bu bağlamda, göreli yol, Linux/MacOS'ta yolun ./ veya ../ ile başlaması ve Windows'ta .\ veya ..\ ile başlaması anlamına gelir. Son olarak, distro eylem hook'ları için, aracın istenen sürümü o betiğe ilk bağımsız değişken olarak geçirilecektir.

Örnek hooks.json dosyasındaki yarn.distro hook'unu kullanarak, yarn@1.13.0 getirilirken, Volta ~/yarn-distro "1.13.0" çağrısını yapacak ve tarball'u bu hook tarafından döndürülen URL'den indirmeye çalışacaktır.

Released under the BSD 2-Clause License.