Hoe vermeld ik een privé Github-repo als een "dependency"
in package.json
? Ik heb npm’s Github URL’s-syntaxis zoals ryanve/example
geprobeerd, maar ik doe npm install
in 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
- Maak een persoonlijk toegangstoken aan in de ontwikkelaarsinstellingen: https://github.com/settings/tokens
- 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]
- Update
package.json
volgens de onderstaande indeling.
"name": "@jessica/my-npm-package",
"repository": "git://github.com/jessica/my-npm-package.git",
"publishConfig": {
"registry":"https://npm.pkg.github.com"
},
- Als u het NPM-pakket wilt publiceren, voert u het volgende uit:
npm publish
Installeer een privé NPM-pakket in een project
- Log in op NPM op dezelfde exacte manier als stap 2 hierboven.
- 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 login
nodig om op dezelfde manier te verifiëren. Anders zal npm install
mislukken, 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.
- Maak een toegangstoken aan met een CI-only GitHub-account of pak een toegangstoken van uw eigen GitHub-account.
- Voeg dat toegangstoken toe aan uw opslagplaats als een “geheim”, in de opslagplaatsinstellingen.
- Update uw GitHub Actions-workflowscript om deze stap uit te voeren NADAT u NPM hebt geïnstalleerd en VOORDAT u
npm install
uitvoert:
- 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
, EMAIL
en 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 install
uitvoert, 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_TOKEN
die GitHub automatisch levert niet kunnen gebruiken? De reden is secrets.GITHUB_TOKEN
alleenheeft 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.