Azure Artifacts'te Npm kapsamlarını kullanma
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Npm kapsamları, ilgili paketleri gruplar halinde kategorilere ayırmak için bir araç görevi görür. Bu kapsamlar, çakışmalarla karşılaşmadan farklı kullanıcılar tarafından oluşturulanlarla aynı adlara sahip paketler oluşturmanıza olanak tanır. Kapsamları kullanarak, @scopeName kapsam ön ekini ekleyerek ve .npmrc dosyasını yalnızca bu kapsama sahip bir akışı kullanacak şekilde yapılandırarak genel ve özel paketleri ayırma olanağınız vardır.
Azure Artifacts, akışlardan veya genel kayıt defterlerinden hem kapsamlı hem de kapsamsız paketleri yayımlama ve indirme özelliği sağlar. Npm kapsamları, İnternet erişimi olmayan şirket içinde barındırılan sunucularla çalışırken özellikle değerlidir çünkü bu tür senaryolarda yukarı akış kaynaklarını yapılandırmak mümkün değildir. Özetle, kapsamları kullanırken:
- İsim çakışmaları konusunda endişelenmemiz gerekmez.
- Paketlerimizi yüklemek veya yayımlamak için npm kayıt defterini değiştirmeniz gerekmez.
- Her npm kuruluşunun/kullanıcısının kendi kapsamı vardır ve paketleri yalnızca sahibi veya kapsam üyeleri kendi kapsamlarında yayımlayabilir.
Proje kurulumu
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
Yapıtlar'ı ve ardından beslenen Bağlan seçin.
npm'yi ve ardından Diğer'i seçin.
package.json ile aynı dizine bir
.npmrc
dosya ekleyin ve aşağıdaki kod parçacığını dosyanıza yapıştırın.Kuruluş kapsamlı akış:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME/_packaging/<FEED_NAME>/npm/registry/ always-auth=true
Proje kapsamlı akış:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true
Kimlik bilgilerini ayarlama
Aşağıdaki kod parçacığını kullanıcı düzeyi
.npmrc
dosyanıza kopyalayın (Örnek: C:\Users\FabrikamUser.npmrc). Kaynak deponuzun içindeki .npmrc dosyasına yapıştırmadığınızdan emin olun.Kuruluş kapsamlı akış:
; begin auth token //pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value //pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value ; end auth token
Proje kapsamlı akış:
; begin auth token //pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value //pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] //pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value ; end auth token
Paketleme>Okuma ve yazma kapsamları ile kişisel erişim belirteci oluşturun.
Yeni oluşturulan kişisel erişim belirtecinizi kodlamak için aşağıdaki komutu çalıştırın. İstendiğinde, kişisel erişim belirtecinizi yapıştırın ve ardından elde edilen Base64 kodlanmış değerini kopyalayın.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Dosyanızı
.npmrc
açın ve yer tutucuyu[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
yeni oluşturduğunuz kodlanmış kişisel erişim belirtecinizle değiştirin.
Kapsam kurulumu
.npmrc dosyanızda değerini ile @ScopeName:registry=<YOUR_SOURCE_URL>
değiştirinregistry=<YOUR_SOURCE_URL>
.
package.json dosyanıza hem kapsam hem de paket adlarını şu şekilde eklediğinizden emin olun: { "name": "@ScopeName/PackageName" }
. Aşağıdaki örneklere bakın:
Kuruluş kapsamlı akış:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true
{ "name": "@ScopeName/PackageName" }
Proje kapsamlı akış:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true
{ "name": "@ScopeName/PackageName" }
Örnek:
@local:registry=https://pkgs.dev.azure.com/FabrikamOrg/NpmDemo/_packaging/FabrikamFeed/npm/registry/ always-auth=true
{ "name": "@demo/js-e2e-express-server", "version": "2.0.0", "description": "JavaScript server written with Express.js", "main": "index.js", "directories": { "doc": "docs", "test": "test" }
Kapsamlı paketleri yayımlama
Bir komut istemi penceresi açın, proje dizininize gidin ve kapsamlı paketinizi yayımlamak için aşağıdaki komutu çalıştırın. Örneğimizde paketimiz görünümün @local altında listelenmiştir.
npm publish
Yukarı akış kaynakları ile kapsamlar karşılaştırması
Yukarı akış kaynakları, akışınızda kapsamlı ve kapsamsız paketlerin yanı sıra npmjs.com gibi genel kayıt defterlerinden hem kapsamlı hem de kapsamsız paketleri kullanma esnekliği sunar.
Ancak kapsamlar paketlerinize bir adlandırma kısıtlaması uygular: her paket adı ile @<scope>
başlamalıdır. Özel paketlerinizi genel kayıt defterlerinde yayımlamak istiyorsanız, bunu kapsamları olduğu gibi yapmanız gerekir. Paketlerinizi dağıtırken paket kapsamlarını kaldırırsanız, package.json dosyanızdaki tüm başvuruları güncelleştirmeniz gerekir. Bunu göz önünde bulundurarak kapsamlar, yukarı akış kaynaklarına uygun bir alternatif olarak kullanılabilir.