Implements @beads/bd npm package for easy installation in Node.js environments, especially Claude Code for Web. Features: - Automatic platform-specific binary download during postinstall - CLI wrapper that invokes native bd binary - Full feature parity with standalone bd - Works with SessionStart hooks for auto-installation Package structure: - bin/bd.js: Node.js CLI wrapper - scripts/postinstall.js: Downloads correct binary from GitHub releases - scripts/test.js: Verification tests - Comprehensive documentation (6 guides) Published to npm: https://www.npmjs.com/package/@beads/bd Benefits vs WASM: - Full SQLite support (no custom VFS) - Better performance (native vs WASM) - Simpler implementation and maintenance - All commands work identically Closes bd-febc, bd-be7a, bd-e2e6, bd-f282, bd-87a0, bd-b54c 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
172 lines
3.5 KiB
Markdown
172 lines
3.5 KiB
Markdown
# Publishing @beads/bd to npm
|
|
|
|
This guide covers how to publish the @beads/bd package to npm.
|
|
|
|
## Prerequisites
|
|
|
|
1. **npm account**: You need an npm account. Create one at https://www.npmjs.com/signup
|
|
2. **@beads organization**: The package is scoped to `@beads`, so you need to either:
|
|
- Create the @beads organization on npm (if it doesn't exist)
|
|
- Be a member of the @beads organization with publish rights
|
|
|
|
## Setup
|
|
|
|
### 1. Login to npm
|
|
|
|
```bash
|
|
npm login
|
|
```
|
|
|
|
This will prompt for:
|
|
- Username
|
|
- Password
|
|
- Email
|
|
- OTP (if 2FA is enabled)
|
|
|
|
### 2. Verify authentication
|
|
|
|
```bash
|
|
npm whoami
|
|
```
|
|
|
|
Should output your npm username.
|
|
|
|
### 3. Create organization (if needed)
|
|
|
|
If the `@beads` organization doesn't exist:
|
|
|
|
```bash
|
|
npm org create beads
|
|
```
|
|
|
|
Or manually at: https://www.npmjs.com/org/create
|
|
|
|
## Publishing
|
|
|
|
### 1. Update version (if needed)
|
|
|
|
The version in `package.json` should match the beads release version.
|
|
|
|
```bash
|
|
# Edit package.json manually or use npm version
|
|
npm version patch # or minor, major
|
|
```
|
|
|
|
### 2. Test the package
|
|
|
|
```bash
|
|
# From the npm-package directory
|
|
npm test
|
|
|
|
# Test installation locally
|
|
npm link
|
|
|
|
# Verify the global install works
|
|
bd version
|
|
```
|
|
|
|
### 3. Publish to npm
|
|
|
|
For the first publish:
|
|
|
|
```bash
|
|
# Publish as public (scoped packages are private by default)
|
|
npm publish --access public
|
|
```
|
|
|
|
For subsequent publishes:
|
|
|
|
```bash
|
|
npm publish
|
|
```
|
|
|
|
### 4. Verify publication
|
|
|
|
```bash
|
|
# Check the package page
|
|
open https://www.npmjs.com/package/@beads/bd
|
|
|
|
# Try installing it
|
|
npm install -g @beads/bd
|
|
bd version
|
|
```
|
|
|
|
## Publishing Workflow
|
|
|
|
The typical workflow when a new beads version is released:
|
|
|
|
1. **Wait for GitHub release**: Ensure the new version is released on GitHub with binaries
|
|
2. **Update package.json**: Update version to match the GitHub release
|
|
3. **Test locally**: Run `npm install` and `npm test` to ensure binaries download correctly
|
|
4. **Publish**: Run `npm publish --access public` (or just `npm publish` after first release)
|
|
5. **Verify**: Install globally and test
|
|
|
|
## Automation (Future)
|
|
|
|
In the future, this could be automated with GitHub Actions:
|
|
|
|
```yaml
|
|
# .github/workflows/publish-npm.yml
|
|
name: Publish to npm
|
|
on:
|
|
release:
|
|
types: [published]
|
|
jobs:
|
|
publish:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '18'
|
|
registry-url: 'https://registry.npmjs.org'
|
|
- run: cd npm-package && npm publish --access public
|
|
env:
|
|
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "EEXIST: package already published"
|
|
|
|
You're trying to publish a version that already exists. Bump the version:
|
|
|
|
```bash
|
|
npm version patch
|
|
npm publish
|
|
```
|
|
|
|
### "ENEEDAUTH: need auth"
|
|
|
|
You're not logged in:
|
|
|
|
```bash
|
|
npm login
|
|
npm whoami # verify
|
|
```
|
|
|
|
### "E403: forbidden"
|
|
|
|
You don't have permission to publish to @beads. Either:
|
|
- Create the organization
|
|
- Ask the organization owner to add you
|
|
- Change the package name to something you own
|
|
|
|
### Binary download fails during postinstall
|
|
|
|
The version in package.json doesn't match a GitHub release, or the release doesn't have the required binary assets.
|
|
|
|
Check: https://github.com/steveyegge/beads/releases/v{VERSION}
|
|
|
|
## Version Sync
|
|
|
|
Keep these in sync:
|
|
- `npm-package/package.json` version
|
|
- GitHub release tag (e.g., `v0.21.5`)
|
|
- Beads binary version
|
|
|
|
The postinstall script downloads binaries from:
|
|
```
|
|
https://github.com/steveyegge/beads/releases/download/v{VERSION}/beads_{VERSION}_{platform}_{arch}.{ext}
|
|
```
|