init commit for iPAL-kit plugin
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Publikacja ipal-kit — checklist
|
||||
|
||||
## package.json — wymagane pola
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "@intecion/ipal-kit", // scoped pod organizację
|
||||
"version": "1.0.0", // BUMP przy każdej publikacji (semver)
|
||||
"files": ["dist"], // tylko dist trafia do pakietu (NIE src)
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"exports": { ... }, // wszystkie entry points na ./dist/*
|
||||
"publishConfig": {
|
||||
"registry": "https://npm.pkg.github.com",
|
||||
"exports": { ... } // mirror z ./dist (masz to już zrobione)
|
||||
},
|
||||
"scripts": {
|
||||
"build": "...",
|
||||
"prepublishOnly": "pnpm clean && pnpm build" // build ZAWSZE przed publish
|
||||
},
|
||||
"peerDependencies": { // NIE dependencies — klient już je ma
|
||||
"payload": "3.84.1",
|
||||
"next": ">=15",
|
||||
"react": ">=19"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Krytyczne przed pierwszą publikacją
|
||||
|
||||
- [ ] **peerDependencies zamiast dependencies** dla payload/next/react —
|
||||
inaczej pakiet zaciąga drugą kopię Payloada i wszystko się sypie.
|
||||
@payloadcms/plugin-seo i plugin-form-builder też jako peer (klient pinuje).
|
||||
- [ ] **`"files": ["dist"]`** — bez tego do pakietu trafia src/ (widzieliśmy to
|
||||
w stack trace). Sam dist.
|
||||
- [ ] **usuń self-reference** — sprawdź, że w dependencies NIE ma
|
||||
"ipal-kit": "file:..." (ta zaraza z pnpm add w złym katalogu).
|
||||
- [ ] **prepublishOnly** buduje przed publikacją — nigdy nie publikuj ręcznie
|
||||
zbudowanego dist (łatwo o nieaktualny).
|
||||
- [ ] **bump wersji** — koniec z 1.0.0 na zawsze. Każda publikacja = nowy numer.
|
||||
To rozwiązuje cały cykl cache/store prune, który gryzł podczas developmentu.
|
||||
|
||||
## Publikacja (GitHub Packages)
|
||||
|
||||
```bash
|
||||
# jednorazowo: token GitHuba z prawami write:packages w ~/.npmrc
|
||||
echo "//npm.pkg.github.com/:_authToken=TWÓJ_TOKEN" >> ~/.npmrc
|
||||
|
||||
# przy każdym wydaniu
|
||||
npm version patch # 1.0.0 → 1.0.1 (albo minor/major)
|
||||
npm publish
|
||||
```
|
||||
|
||||
## Instalacja u pracownika
|
||||
|
||||
```bash
|
||||
# ~/.npmrc w projekcie albo globalnie
|
||||
@intecion:registry=https://npm.pkg.github.com
|
||||
//npm.pkg.github.com/:_authToken=ICH_TOKEN
|
||||
|
||||
# potem normalnie
|
||||
pnpm add @intecion/ipal-kit
|
||||
pnpm add @payloadcms/[email protected] @payloadcms/[email protected] \
|
||||
nodemailer lucide-react slugify server-only
|
||||
```
|
||||
|
||||
## README pakietu
|
||||
|
||||
Wskaż na docs/getting-started.md jako pierwszy krok. Pracownik z dostępem do
|
||||
rejestru + getting-started postawi projekt bez pytania Ciebie o nic.
|
||||
Reference in New Issue
Block a user