pyRPC
← Back to Blog

Publishing guide: npm @pyrpc/* and PyPI

·10 min read

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 public for scoped npm packages
  • Ensure CI job lists every workspace package (react/next/vue/svelte)
  • Verify: npm view @pyrpc/react version