Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Npm-bereiken dienen als een middel om gerelateerde pakketten in groepen te categoriseren. Met deze scopes kunt u pakketten maken met dezelfde namen als die door verschillende gebruikers zonder conflicten. Met behulp van scopes hebt u de mogelijkheid om openbare en privé-pakketten te scheiden door het scopevoorvoegsel @scopeName toe te voegen en het .npmrc-bestand te configureren om uitsluitend een feed met die specifieke scope te gebruiken.
Azure Artifacts biedt de mogelijkheid om zowel beperkte als onbeperkte pakketten te publiceren en te downloaden vanuit feeds of openbare registers. Npm-bereiken zijn met name waardevol bij het werken met zelf-hostende on-premises servers die geen internettoegang hebben, omdat het configureren van upstreambronnen in dergelijke scenario's niet haalbaar is. Kortom, wanneer u scopes gebruikt:
- We hoeven ons geen zorgen te maken over naamconflicten.
- U hoeft het npm-register niet te wijzigen om onze pakketten te installeren of te publiceren.
- Elke npm-organisatie/gebruiker heeft een eigen bereik en alleen de eigenaar of de bereikleden kunnen pakketten publiceren naar hun bereik.
Projectopstelling
Meld u aan bij uw Azure DevOps-organisatie en navigeer vervolgens naar uw project.
Selecteer Artefactenen selecteer vervolgens Verbinding maken met feed.
Selecteer npm en selecteer Overige.
Voeg een
.npmrcbestand toe in dezelfde map als uw package.jsonen plak het volgende fragment in uw bestand.Feed voor de gehele organisatie:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME/_packaging/<FEED_NAME>/npm/registry/ always-auth=trueProjectgebaseerde feed
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true
Inloggegevens instellen
Kopieer het volgende codefragment naar het bestand op gebruikersniveau
.npmrc(bijvoorbeeld: C:\Users\FabrikamUser.npmrc). Zorg ervoor dat u het niet in het NPMRC-bestand in uw bronopslagplaats plakt.Feed voor de gehele organisatie:
; 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 tokenProjectgebaseerde feed
; 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
Genereer een persoonlijk toegangstoken met lees- en schrijfbereiken voor >.
Voer de volgende opdracht uit om het zojuist gegenereerde persoonlijke toegangstoken te coderen. Wanneer u hierom wordt gevraagd, plakt u uw persoonlijke toegangstoken en kopieert u vervolgens de resulterende base64-gecodeerde waarde.
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(); })"Opmerking
Vanaf juli 2024 zijn Azure DevOps Personal Access Tokens (PAT's) 82 tekens lang. Sommige hulpprogramma's kunnen automatische regeleinden invoegen bij het coderen van tokens naar Base64. Om dit te voorkomen, gebruikt u de
-w0vlag met de base64-opdracht om ervoor te zorgen dat de uitvoer op één regel blijft. In deze zelfstudie gebruiken we de buffermethode van Node, die standaard een base64-tekenreeks met één regel produceert.Open het
.npmrcbestand en vervang de tijdelijke aanduiding[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]door uw gecodeerde persoonlijke toegangstoken dat u zojuist hebt gemaakt.
Bereik instellen
Vervang in je .npmrc-bestand registry=<YOUR_SOURCE_URL> met @ScopeName:registry=<YOUR_SOURCE_URL>.
Zorg ervoor dat u zowel de bereik- als pakketnamen in uw package.json-bestand als volgt opneemt: { "name": "@ScopeName/PackageName" } Zie de onderstaande voorbeelden:
Feed voor de gehele organisatie:
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true{ "name": "@ScopeName/PackageName" }Projectgebaseerde feed
@ScopeName:registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/ always-auth=true{ "name": "@ScopeName/PackageName" }Voorbeeld:
@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" }
Scoped pakketten publiceren
Open een commandoregelvenster, navigeer naar je projectmap en voer de volgende opdracht uit om je omlijnd pakket te publiceren. In ons voorbeeld wordt ons pakket weergegeven onder de @local weergave.
npm publish
Upstream-bronnen versus reikwijdten
Upstream-bronnen bieden u de meeste flexibiliteit om een combinatie van gescopeerde en niet-gescopeerde pakketten in uw feed te gebruiken, evenals zowel gescopeerde als niet-gescopeerde pakketten van openbare registers, zoals npmjs.com.
Scopes leggen echter een naambeperking op voor uw pakketten: elke pakketnaam moet beginnen met @<scope>. Als u uw privépakketten wilt publiceren naar openbare registers, moet u dit doen met de scopes intact. Als u pakketbereiken verwijdert bij het implementeren van uw pakketten, moet u alle verwijzingen in uw package.json-bestand bijwerken. Met dat in gedachten kunnen reikwijdten dienen als een levensvatbaar alternatief voor upstream-bronnen.