We use Changesets to manage versioning and publishing from the monorepo root.
# 1. Publish all packages at once
bun run release
# That's it! This will:
# - Build all packages
# - Publish to npm with the @tortoise-os scope
# - Update package versions
# - Create git tags
# 1. Create a changeset (if you made changes)
bun run changeset
# 2. Version packages (updates package.json versions)
bun run version
# 3. Build all packages
bun run build
# 4. Publish to npm
bun run release
When you make changes:
bun run changeset
This will ask:
- Which packages changed?
- What type of change? (major/minor/patch)
- Description of the change
# Update versions based on changesets
bun run version
# Build and publish
bun run release
If you need to publish a single package:
cd packages/PACKAGE_NAME
npm publish --access public
Already done! ✅
- Changesets installed
- Config set to
"access": "public" - Initial changeset created
- All packages ready
All packages are configured with:
- ✅ Scope:
@tortoise-os - ✅ Repository metadata
- ✅
publishConfig.access = "public" - ✅ Awesome READMEs
@tortoise-os/create-bun-move- CLI tool@tortoise-os/terrapin- Playwright testing@tortoise-os/core- Core utilities@tortoise-os/sdk- TypeScript SDK@tortoise-os/hooks- React hooks@tortoise-os/components- UI components@tortoise-os/ui- Magic UI@tortoise-os/burner-wallet- Dev wallet@tortoise-os/ai-integration- AI utilities@tortoise-os/move- Move contracts@tortoise-os/move-deployer- Move deployer
{
"changeset": "changeset", // Create new changeset
"version": "changeset version", // Update package versions
"release": "bun run build && changeset publish" // Build & publish
}
Make sure you're running from the package directory, not root. Or use bun run release.
Login to npm: npm login
Version conflict - run bun run version to bump versions.
- Always create changesets for user-facing changes
- Test locally before publishing (
npm pack) - Use semantic versioning (major.minor.patch)
- Document breaking changes in changeset descriptions
- Publish from main branch for stability
# After making changes to packages
# 1. Create changeset
bun run changeset
# Select: @tortoise-os/sdk
# Type: patch (bug fix) / minor (feature) / major (breaking)
# Describe: "Add new method for pool queries"
# 2. Commit changeset
git add .changeset/
git commit -m "Add changeset for SDK pool query"
# 3. When ready to release
bun run version # Updates versions
git add .
git commit -m "Version packages"
# 4. Publish
bun run release # Publishes to npm
# 5. Push changes
git push --follow-tags
Now you can publish from the root just like bun-eth! 🐢🚀