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
Jelentkezzen be az Azure DevOps-szervezetbe, és lépjen a projekthez.
Válassza az Összetevők lehetőséget, majd válassza a Csatlakozás a hírcsatornához.
Válassza az npm, majd az Egyéb lehetőséget.
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
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
Hozzon létre egy személyes hozzáférési jogkivonatot a Packaging>Read& írási hatóköreivel.
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(); })"
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
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.