Megosztás a következőn keresztül:


Npm-hatókörök használata az Azure Artifactsben

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Az Npm-hatókörök a kapcsolódó csomagok csoportokba való kategorizálására szolgálnak. Ezek a hatókörök lehetővé teszik, hogy a különböző felhasználók által létrehozottakkal azonos nevű csomagokat hozzon létre ütközések nélkül. A hatókörök használatával elkülönítheti a nyilvános és a privát csomagokat a hatókör előtagjának @scopeName hozzáadásával, valamint az .npmrc fájl konfigurálásával, hogy kizárólag az adott hatókörrel rendelkező hírcsatornát használjon.

Az Azure Artifacts lehetővé teszi a hatókörrel rendelkező és a nem hatókörrel rendelkező csomagok közzétételét és letöltését a hírcsatornákból vagy nyilvános adatbázisokból. Az Npm-hatókörök különösen hasznosak, ha olyan helyi kiszolgálókon dolgoznak, amelyek nem rendelkeznek internet-hozzáféréssel, mivel az ilyen helyzetekben a felsőbb rétegbeli források konfigurálása nem valósítható meg. Összefoglalva, hatókörök használata esetén:

  • Nem kell aggódnunk a névütközések miatt.
  • A csomagok telepítéséhez vagy közzétételéhez nincs szükség az npm beállításjegyzék módosítására.
  • Minden npm-szervezet/felhasználó saját hatókörrel rendelkezik, és csak a tulajdonos vagy a hatókör tagjai tehetnek közzé csomagokat a hatókörükben.

Projekt beállítása

  1. Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.

  2. Válassza az Összetevők lehetőséget, majd válassza a Csatlakozás a hírcsatornához.

    Képernyőkép a hírcsatornához való csatlakozásról.

  3. Válassza az npm, majd az Egyéb lehetőséget.

  4. Adjon hozzá egy .npmrc fájlt ugyanabban a könyvtárban, mint a package.json, és illessze be a következő kódrészletet a fájlba.

    • Szervezeti hatókörű hírcsatorna:

      registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME/_packaging/<FEED_NAME>/npm/registry/
      
      always-auth=true
      
    • Projekt hatókörű hírcsatorna:

      registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
      
      always-auth=true
      

Hitelesítő adatok beállítása

  1. Másolja a következő kódrészletet a felhasználói szintű .npmrc fájlba (példa: C:\Users\FabrikamUser.npmrc). Ügyeljen arra, hogy ne illessze be a forrásadattárban lévő .npmrc fájlba.

    • Szervezeti hatókörű hírcsatorna:

      ; 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
      
    • Projekt hatókörű hírcsatorna:

      ; 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
      
  2. Hozzon létre egy személyes hozzáférési jogkivonatot a Packaging>Read& írási hatóköreivel.

  3. Futtassa az alábbi parancsot az újonnan létrehozott személyes hozzáférési jogkivonat kódolásához. Amikor a rendszer kéri, illessze be a személyes hozzáférési jogkivonatot, majd másolja az eredményül kapott Base64 kódolt értéket.

    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(); })"
    
  4. Nyissa meg a fájlt, .npmrc és cserélje le a helyőrzőt [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] az imént létrehozott kódolt személyes hozzáférési jogkivonatra.

Hatókör beállítása

Az .npmrc fájlban cserélje le a következőre registry=<YOUR_SOURCE_URL> @ScopeName:registry=<YOUR_SOURCE_URL>: .

Ügyeljen arra, hogy a hatókör és a csomagnevek is szerepeljenek a package.json fájlban az alábbiak szerint: { "name": "@ScopeName/PackageName" }. Lásd az alábbi példákat:

  • Szervezeti hatókörű hírcsatorna:

    @ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/
    
    always-auth=true
    
    {
    "name": "@ScopeName/PackageName" 
    }
    
  • Projekt hatókörű hírcsatorna:

    @ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
    
    always-auth=true
    
    {
    "name": "@ScopeName/PackageName" 
    }
    
  • Példa:

    @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"
      }
    

Hatókörű csomagok közzététele

Nyisson meg egy parancssori ablakot, keresse meg a projektkönyvtárat, és futtassa a következő parancsot a hatókörrel rendelkező csomag közzétételéhez. A példánkban a csomag megjelenik a @local nézetben.

npm publish

Képernyőkép egy hatókörrel rendelkező csomagról egy Azure Artifacts-hírcsatornában.

Felsőbb rétegbeli források és hatókörök

A felsőbb rétegbeli források a legrugalmasabban használhatják a hatókörös és a nem hatókörös csomagok kombinációját a hírcsatornában, valamint a nyilvános adatbázisokból származó hatókörös és nem hatókörös csomagokat is, például a npmjs.com.

A hatókörök azonban elnevezési korlátozást vezetnek be a csomagokra: minden csomagnévnek a következővel @<scope>kell kezdődnie: Ha nyilvános adatbázisokban szeretné közzétenni a privát csomagokat, akkor ezt érintetlen hatókörökkel kell megtennie. Ha a csomagok telepítésekor eltávolítja a csomag hatóköreit, frissítenie kell a package.json fájl összes hivatkozását. Ezt szem előtt tartva a hatókörök életképes alternatívaként szolgálhatnak a felsőbb rétegbeli forrásokhoz.