86 lines
3.2 KiB
Markdown
86 lines
3.2 KiB
Markdown
# Jak komendy rozmawiają z git.intecion.net
|
|
|
|
Ten plik tłumaczy, co robi każda komenda, gdy instalujesz `@intecion/ipal-kit`.
|
|
Rejestr pakietów jest **publiczny do odczytu** — instalacja nie wymaga tokenu.
|
|
Token jest potrzebny tylko przy publikowaniu nowych wersji (patrz
|
|
[publishing.md](./publishing.md)).
|
|
|
|
## Rejestr scoped — co to znaczy
|
|
|
|
W `.npmrc` masz jedną linię:
|
|
|
|
```
|
|
@intecion:registry=https://git.intecion.net/api/packages/IntecionSoftware/npm/
|
|
```
|
|
|
|
To reguła: „pakiety zaczynające się od `@intecion/` pobieraj z tego adresu".
|
|
**Nie zmienia** domyślnego rejestru — wszystko inne (`react`, `next`,
|
|
`@payloadcms/*`) dalej idzie z publicznego npm. To override dla jednego scope,
|
|
nie przełączenie całego źródła.
|
|
|
|
Dlatego mieszana instalacja działa bez konfliktu:
|
|
- `@intecion/ipal-kit` → Gitea
|
|
- `react`, `payload`, `lucide-react` → npm
|
|
|
|
## Komenda po komendzie
|
|
|
|
### edycja `.npmrc` (linia z registry)
|
|
|
|
**Co robi:** zapisuje regułę „scope `@intecion` → rejestr Gitea". Nic nie
|
|
pobiera — to plik konfiguracyjny, czytany dopiero przy instalacji.
|
|
|
|
**Rozmowa z serwerem:** żadna przy samym zapisie.
|
|
|
|
Ponieważ rejestr jest publiczny, ta linia **nie zawiera tokenu** — plik jest
|
|
bezpieczny do zacommitowania i musi trafić do repo, żeby serwer deploymentu też
|
|
wiedział, skąd brać `@intecion/*`.
|
|
|
|
### `pnpm add @intecion/ipal-kit`
|
|
|
|
**Co robi:** to komenda, która faktycznie łączy się z rejestrem.
|
|
|
|
Krok po kroku:
|
|
1. pnpm widzi scope `@intecion` → sprawdza `.npmrc` → znajduje regułę „→ Gitea".
|
|
2. Łączy się z rejestrem Gitea. Rejestr publiczny, więc **bez tokenu**.
|
|
3. Rejestr odsyła metadane pakietu (wersje, adres `.tgz`).
|
|
4. pnpm pobiera i rozpakowuje do `node_modules/@intecion/ipal-kit` — **czysta
|
|
ścieżka**, bez hasha commita.
|
|
|
|
Ta czysta ścieżka jest ważna: komponenty klienta pluginu (baner zgód, analytics,
|
|
Turnstile) rozwiązują się poprawnie tylko z niej. Instalacja z gita dawała
|
|
pokręconą ścieżkę z hashem, która łamała React Client Manifest.
|
|
|
|
**Gdy to zawiedzie:**
|
|
- `404` — brakuje linii `@intecion:registry` w `.npmrc`, więc pnpm poszedł do
|
|
publicznego npm, gdzie pakietu nie ma. Sprawdź, czy `.npmrc` istnieje i ma tę
|
|
linię.
|
|
|
|
### `pnpm install`
|
|
|
|
**Co robi:** odtwarza wszystkie zależności z `package.json` / lockfile, w tym
|
|
`@intecion/ipal-kit`. Ta sama rozmowa z Gitea dla części `@intecion`, reszta z
|
|
npm. Różnica względem `add`: `install` odtwarza to, co już zapisane, `add`
|
|
dopisuje nowe.
|
|
|
|
## Sprawdzenie, czy rejestr odpowiada
|
|
|
|
Bez tokenu, publiczny endpoint:
|
|
|
|
```bash
|
|
curl -s -o /dev/null -w "%{http_code}\n" \
|
|
https://git.intecion.net/api/packages/IntecionSoftware/npm/@intecion%2Fipal-kit
|
|
```
|
|
|
|
`200` → rejestr działa, pakiet dostępny. `404` → zła ścieżka/nazwa.
|
|
|
|
## Krótkie podsumowanie
|
|
|
|
| Komenda | Rozmawia z serwerem? | Token? | Po co |
|
|
|---|---|---|---|
|
|
| edycja `.npmrc` (registry) | nie | nie | reguła scope na później |
|
|
| `pnpm add @intecion/ipal-kit` | tak | nie (publiczny) | pobiera pakiet |
|
|
| `pnpm install` | tak (dla @intecion) | nie | odtwarza zależności |
|
|
| `curl .../npm/@intecion%2F...` | tak | nie | test dostępności |
|
|
|
|
Publikowanie wersji (osobna rola, **wymaga** tokenu `write:package`):
|
|
[publishing.md](./publishing.md). |