pyRPC releases through version sync + git tag. CI publishes PyPI (OIDC) and npm (NPM_TOKEN).
1. Sync versions
node scripts/release.mjs 0.9.0
Updates every packages/*/package.json and Python pyproject.toml.
2. Build JS adapters
npm install npm run build --workspace=@pyrpc/types npm run build --workspace=@pyrpc/client npm run build --workspace=@pyrpc/react npm run build --workspace=@pyrpc/next npm run build --workspace=@pyrpc/vue npm run build --workspace=@pyrpc/svelte
3a. Recommended: tag → GitHub Actions
git add -A git commit -m "chore: release v0.9.0" git tag v0.9.0 git push origin HEAD git push origin v0.9.0
Requires repo secret NPM_TOKEN and PyPI trusted publisher for this repo. Workflow: .github/workflows/publish.yml.
3b. Manual npm (new packages)
npm whoami # must own @pyrpc org / packages cd packages/types && npm publish --access public cd ../client && npm publish --access public cd ../react && npm publish --access public cd ../next && npm publish --access public cd ../vue && npm publish --access public cd ../svelte && npm publish --access public
Publish order: types → client → react → next/vue/svelte (peers).
3c. Manual PyPI
pip install build twine mkdir -p dist && rm -rf dist/* for pkg in pyrpc-codegen pyrpc-core pyrpc-fastapi pyrpc-flask pyrpc-django-adapter; do python -m build "packages/$pkg" --outdir dist/ done twine upload dist/*
Prefer CI OIDC (skip-existing: true) over long-lived PyPI tokens when possible. Publish codegen before core if versions are tightly coupled.
New packages checklist
- First publish needs
--access publicfor scoped npm packages - Ensure CI job lists every workspace package (react/next/vue/svelte)
- Verify:
npm view @pyrpc/react version

pyRPC