Hoe privé Github-repo te gebruiken als npm-afhankelijkheid

Hoe vermeld ik een privé Github-repo als een "dependency"in package.json? Ik heb npm’s Github URL’s-syntaxis zoals ryanve/examplegeprobeerd, maar ik doe npm installin de pakketmap geeft “kon niet installeren” fouten voor de persoonlijke afhankelijkheden. Is er een speciale syntaxis (of een ander mechanisme) om afhankelijk te zijn van privérepo’s?


Antwoord 1, autoriteit 100%

Het kan worden gedaan via https en oauthofssh.

https en oauth:maak een toegangstokenmet het bereik “repo” en gebruik dan deze syntaxis:

"package-name": "git+https://<github_token>:[email protected]/<user>/<repo>.git"

of

ssh:stel ssh inen dan gebruik deze syntaxis:

"package-name": "git+ssh://[email protected]:<user>/<repo>.git"

(let op het gebruik van een dubbele punt in plaats van een schuine streep voor de gebruiker)


Antwoord 2, autoriteit 8%

Als iemand op zoek is naar een andere optie voor Git Lab en de bovenstaande opties werken niet, dan hebben we een andere optie. Voor een lokale installatie van de Git Lab-server hebben we ontdekt dat de onderstaande benadering ons in staat stelt om de pakketafhankelijkheid op te nemen. We hebben hiervoor een toegangstoken gegenereerd en gebruikt.

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

Als iemand op deze manier een toegangssleutel gebruikt, moet deze natuurlijk een beperkt aantal machtigingen hebben.

Veel succes!


Antwoord 3, autoriteit 4%

Bij git is er een https-indeling

https://github.com/equivalent/we_demand_serverless_ruby.git

Dit formaat accepteert Gebruiker + wachtwoord

https://bot-user:[email protected]/equivalent/we_demand_serverless_ruby.git

Dus wat u kunt doen is een nieuwe gebruiker maken die net als een botzal worden gebruikt,
voeg alleen voldoende machtigingen toe zodat hij de repository die jij hebt gewoon kan lezen
wil NPM-modules laden en dat gewoon direct in je
packages.json

Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

Controleer in het gedeelte Select Scopes de op repo: volledige controle over privérepository’s

Dit is zodat het token toegang heeft tot privérepo’s die de gebruiker kan zien

Maak nu een nieuwe groep in uw organisatie, voeg deze gebruiker toe aan de groep en voeg alleen opslagplaatsen toe die u verwacht
om op deze manier te worden getrokken (ALLEEN LEES toestemming!)

U moet ervoor zorgen dat u deze configuratie alleen naar een privéopslagplaats

pusht

Dan kun je dit toevoegen aan je / packages.json (bot-gebruiker is
naam van gebruiker, xxxxxxxxx is de gegenereerde persoonlijke token)

// packages.json
{
  // ....
    "name_of_my_lib": "https://bot-user:[email protected]/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html


Antwoord 4, autoriteit 4%

NPM zondertoegangstoken in repo

Deze methode vereist dat iedereen die het pakket gebruikt zich verifieert met zijn eigen persoonlijke toegangstoken in plaats van met een enkele groepstoken, waardoor de repo vrij is van toegangstokens. U hoeft ook niet elke keer een nieuw toegangstoken te maken wanneer een gebruiker geen toegang meer moet krijgen, in plaats daarvan verwijdert het verwijderen van een gebruiker uit de repo in GitHub automatisch hun pakkettoegang.

Dit is een verkorte versie van GitHub’s NPM-gids:https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm -register


Publiceer uw GitHub-repo als een NPM-pakket

  1. Maak een persoonlijk toegangstoken aan in de ontwikkelaarsinstellingen: https://github.com/settings/tokens
  2. Aanmelden bij NPM
npm login --scope=@<USERNAME of repo owner in lowercase> --registry=https://npm.pkg.github.com
Username: <Your personal GitHub username>
Password: <Create a GitHub Access Token with your account and paste it here>
Email: <Email associated with the same account>

Bijvoorbeeld:waar gebruiker @Bobby github.com/Jessica/my-npm-package wil publiceren als een NPM-pakket

npm login --scope=@jessica --registry=https://npm.pkg.github.com
Username: bobby
Password: yiueytiupoasdkjalgheoutpweoiru
Email: [email protected]
  1. Update package.jsonvolgens de onderstaande indeling.
 "name": "@jessica/my-npm-package",
  "repository": "git://github.com/jessica/my-npm-package.git",
  "publishConfig": {
    "registry":"https://npm.pkg.github.com"
  },
  1. Als u het NPM-pakket wilt publiceren, voert u het volgende uit:
npm publish

Installeer een privé NPM-pakket in een project

  1. Log in op NPM op dezelfde exacte manier als stap 2 hierboven.
  2. Installeer het pakket met npm install @jessica/my-npm-package

Klaar!

Blijf lezen of uw project GitHub Actions-scripts heeft die dit privé NPM-pakket moeten installeren.


GitHub-acties: een privé-NPM-pakket installeren

In een CI-omgeving heeft u ook npm loginnodig om op dezelfde manier te verifiëren. Anders zal npm installmislukken, omdat het geen toegang heeft tot het privé NPM-pakket. Een manier om dit vooraf te configureren is door een .npmrc-bestand te gebruiken; dit legt echter auth-referenties vast aan de repo met dat bestand. Een andere manier is dus om de NPM-tool npm-cli-loginte gebruiken. Er is een vereiste dat u ofwel uw eigen persoonlijke toegangstoken gebruikt (niet optimaal: u verlaat de repo, CI-onderbrekingen), of een GitHub-account speciaal voor CI instelt en een toegangstoken maakt met dat account.

  1. Maak een toegangstoken aan met een CI-only GitHub-account of pak een toegangstoken van uw eigen GitHub-account.
  2. Voeg dat toegangstoken toe aan uw opslagplaats als een “geheim”, in de opslagplaatsinstellingen.
  3. Update uw GitHub Actions-workflowscript om deze stap uit te voeren NADAT u NPM hebt geïnstalleerd en VOORDAT u npm installuitvoert:
- name: Login to GitHub private NPM registry
  env:
    CI_ACCESS_TOKEN: ${{ secrets.NAME_OF_YOUR_ACCESS_TOKEN_SECRET }}
  shell: bash
  run: |
    npm install -g npm-cli-login
    npm-cli-login -u "USERNAME" -p "${CI_ACCESS_TOKEN}" -e "EMAIL" -r "https://npm.pkg.github.com" -s "@SCOPE"

Vervang NAME_OF_YOUR_ACCESS_TOKEN_SECRET, USERNAME, EMAILen SCOPE.

Bijvoorbeeld

- name: Login to GitHub private NPM registry
  env:
    CI_ACCESS_TOKEN: ${{ secrets.MY_TOKEN }}
  shell: bash
  run: |
    npm install -g npm-cli-login
    npm-cli-login -u "ci-github-account" -p "${CI_ACCESS_TOKEN}" -e "[email protected]" -r "https://npm.pkg.github.com" -s "@jessica"

Klaar!

Als GitHub Actions later npm installuitvoert, heeft het script toegang tot het privé NPM-pakket.

Ter info:als je bekend bent met GitHub-acties, vraag je je misschien af ​​waarom we secrets.GITHUB_TOKENdie GitHub automatisch levert niet kunnen gebruiken? De reden is secrets.GITHUB_TOKENalleenheeft toegang tot de repo die de GitHub-acties uitvoert, het heeft geen toegang tot de repo van het privé NPM-pakket.


Antwoord 5

Ik kon het geaccepteerde antwoord niet laten werken in een Docker-container.

Wat voor mij werkte, was om de Personal Access Tokenvan GitHub in te stellen in een bestand met de naam .netrc

ARG GITHUB_READ_TOKEN
RUN echo -e "machine github.com\n  login $GITHUB_READ_TOKEN" > ~/.netrc 
RUN npm install --only=production --force \
  && npm cache clean --force
RUN rm ~/.netrc

in package.json

"my-lib": "github:username/repo",

Antwoord 6

Hoewel dit een oude vraag is, voeg hier een antwoord toe dat op verschillende platforms werkt.

De algemene npm v7-syntaxis om toegang te krijgen tot privérepository’s in node_modules is –

git+https://<token_name>:<token>@<path_to_repository>.git#<commit>

Je moet een toegangstoken maken met je git-serviceprovider met ten minste leestoegang.

Hier volgen links voor de meest populaire platforms:

Houd er rekening mee dat github een token maakt dat is gekoppeld aan uw gebruikersnaam en dat er geen tokennaam is, dus gebruik uw gebruikersnaam in plaats van token_name voor github.

Other episodes