81 lines
2.4 KiB
Markdown
81 lines
2.4 KiB
Markdown
# Skill: Publish @uncaged/nerve packages to npm
|
|
|
|
## When to use
|
|
|
|
When releasing a new version of any `@uncaged/nerve-*` package to npm.
|
|
|
|
## Prerequisites
|
|
|
|
- npm login with an account that has **owner** access to the `@uncaged` org
|
|
- All tests pass: `pnpm -r run test`
|
|
- Clean working tree (no uncommitted changes)
|
|
|
|
## Packages
|
|
|
|
| Package | Path | npm |
|
|
|---------|------|-----|
|
|
| `@uncaged/nerve-core` | `packages/core` | [link](https://www.npmjs.com/package/@uncaged/nerve-core) |
|
|
| `@uncaged/nerve-daemon` | `packages/daemon` | [link](https://www.npmjs.com/package/@uncaged/nerve-daemon) |
|
|
| `@uncaged/nerve-cli` | `packages/cli` | [link](https://www.npmjs.com/package/@uncaged/nerve-cli) |
|
|
|
|
## Dependency order
|
|
|
|
`core` → `daemon` → `cli`
|
|
|
|
Always publish in this order. If `core` has changes, bump and publish it first, then update dependents.
|
|
|
|
## Steps
|
|
|
|
### 1. Ensure clean state
|
|
|
|
```bash
|
|
git checkout main && git pull origin main
|
|
pnpm install
|
|
pnpm -r run build
|
|
pnpm -r run test
|
|
```
|
|
|
|
### 2. Bump versions
|
|
|
|
Manually update `version` in each changed package's `package.json`.
|
|
|
|
Follow semver:
|
|
- **patch** (0.1.x): bug fixes, refactors
|
|
- **minor** (0.x.0): new features, non-breaking API additions
|
|
- **major** (x.0.0): breaking changes
|
|
|
|
If bumping `core`, also update the `@uncaged/nerve-core` dependency version in `daemon` and `cli` package.json. Same for `daemon` → `cli`.
|
|
|
|
### 3. Build
|
|
|
|
```bash
|
|
pnpm -r run build
|
|
```
|
|
|
|
### 4. Publish (in order)
|
|
|
|
```bash
|
|
# Only publish packages that have version bumps
|
|
# MUST use pnpm publish (not npm) — pnpm converts workspace:* to real versions
|
|
cd packages/core && pnpm publish --access public --no-git-checks
|
|
cd packages/daemon && pnpm publish --access public --no-git-checks
|
|
cd packages/cli && pnpm publish --access public --no-git-checks
|
|
```
|
|
|
|
### 5. Commit & tag
|
|
|
|
```bash
|
|
git add -A
|
|
git commit -m "release: @uncaged/nerve-core@X.Y.Z, @uncaged/nerve-daemon@X.Y.Z, @uncaged/nerve-cli@X.Y.Z"
|
|
git tag -a vX.Y.Z -m "Release vX.Y.Z"
|
|
git push origin main --tags
|
|
```
|
|
|
|
## Pitfalls
|
|
|
|
- **Don't publish without building first** — `tsup` output in `dist/` is what npm ships
|
|
- **Dependency order matters** — if you publish `daemon` before `core`, npm may resolve the old `core` version
|
|
- **`--access public`** is required for scoped packages on first publish; safe to always include
|
|
- **Check `npm whoami`** to confirm you're logged in as the right account
|
|
- **No changeset tool** — this project uses manual version bumps (no changesets/lerna)
|