This guide walks you through deploying Ano to npm and the landing page to Vercel.
Three Deployments:
- npm Package (CLI + Web Viewer) - Auto-deployed via GitHub Actions
- Landing Page - Deployed to Vercel
- MCP Server - Distributed with the npm package
-
npm Account
- Create account at https://www.npmjs.com/signup
- Verify your email
-
npm Access Token
# Login to npm npm login # Generate token npm token create --access=public --description="GitHub Actions - Ano"
- Copy the token (you won't see it again!)
-
Add Token to GitHub
- Go to: https://github.com/vedpawar2254/Ano/settings/secrets/actions
- Click "New repository secret"
- Name:
NPM_TOKEN - Value: Paste the token
- Click "Add secret"
# 1. Build everything
npm run build:all
# 2. Test the package
npm pack --dry-run
# 3. Create actual package
npm pack
# 4. Test installation locally
npm install -g nakedved-ano-0.1.0.tgz
# 5. Verify it works
ano --version
ano --help
# 6. Test the serve command
echo "# Test" > test.md
ano serve test.md
# Visit http://localhost:3000
# 7. Clean up
npm uninstall -g @nakedved/ano
rm nakedved-ano-0.1.0.tgz# Make sure you're logged in
npm whoami
# Publish (scoped packages are private by default, so use --access public)
npm publish --access publicCurrent Setup:
- ✅ CI workflow builds and tests on every push/PR
- ✅ Release workflow publishes to npm on push to
main - ✅
NPM_TOKENneeded in GitHub secrets
To Enable:
- Add
NPM_TOKENto GitHub secrets (see above) - Push to
mainbranch - Watch the "CI" workflow in Actions tab
- Package will be published automatically!
Workflow Triggers:
- Runs on: Push to
main(not PRs) - Needs:
buildjob to pass - Publishes:
@nakedved/ano@0.1.0
# 1. Install Vercel CLI
npm install -g vercel
# 2. Login
vercel login
# 3. Navigate to landing directory
cd landing
# 4. Deploy to preview
vercel
# 5. Deploy to production
vercel --prod-
Go to Vercel Dashboard
- Visit: https://vercel.com/new
- Sign in with GitHub
-
Import Repository
- Click "Add New..." → "Project"
- Select
vedpawar2254/Ano - Click "Import"
-
Configure Project
- Framework Preset: Vite
- Root Directory: landing
- Build Command:
npm run build - Output Directory:
dist - Install Command:
npm install
-
Deploy
- Click "Deploy"
- Wait ~1-2 minutes
- Get your URL:
https://ano-xxxxx.vercel.app
-
Custom Domain (Optional)
- Go to Project Settings → Domains
- Add your custom domain
- Follow DNS setup instructions
Once Vercel project is created:
- Every push to
mainauto-deploys to production - Every PR creates a preview deployment
- No manual steps needed!
# For bug fixes (0.1.0 → 0.1.1)
npm version patch
# For new features (0.1.0 → 0.2.0)
npm version minor
# For breaking changes (0.1.0 → 1.0.0)
npm version major
# This will:
# 1. Update version in package.json
# 2. Create a git commit
# 3. Create a git tag# 1. Bump version
npm version minor -m "Release v%s"
# 2. Push with tags
git push origin main --tags
# 3. Create release on GitHub
# Go to: https://github.com/vedpawar2254/Ano/releases/new
# - Tag: v0.2.0
# - Title: v0.2.0
# - Description: Copy from CHANGELOG.md
# - Attach: vedpawar-ano-0.2.0.tgz (from npm pack)Consider adding semantic-release:
npm install --save-dev semantic-release @semantic-release/changelog @semantic-release/git-
Code Quality
- All tests pass locally
- TypeScript compiles without errors
- No console.errors in production code
- Web UI loads without errors
-
Package Configuration
- Updated package.json with repository info
- Created .npmignore
- Created CHANGELOG.md
- Updated README install instructions
- Verified package size < 1MB
-
npm Setup
- Created npm account
- Generated NPM_TOKEN
- Added NPM_TOKEN to GitHub secrets
- Tested
npm pack --dry-run - Tested local installation
-
Landing Page
- Created vercel.json
- Optimized images (logo.png is 5.2MB!)
- Tested production build locally
- Set up Vercel project
-
Documentation
- README has correct install command
- CHANGELOG updated
- Links point to correct GitHub repo
- Examples work
Problem: ano is already published
Solution: ✅ Already using @nakedved/ano (scoped package)
Problem: Not logged in to npm Solution:
npm login
npm whoami # VerifyProblem: No permission for scoped package
Solution: Use --access public:
npm publish --access publicProblem: NPM_TOKEN not set Solution:
- Generate token:
npm token create - Add to GitHub: Settings → Secrets → Actions →
NPM_TOKEN
Problem: Build command or directory wrong
Solution: Check vercel.json:
{
"buildCommand": "npm run build",
"outputDirectory": "dist"
}- Stats: https://www.npmjs.com/package/@nakedved/ano
- Downloads: Check daily/weekly/monthly on npm
- Unpkg CDN: https://unpkg.com/@nakedved/ano@latest/
- URL: Check Vercel dashboard
- Analytics: Enable in Vercel settings
- Logs: Check deployment logs in Vercel
- Actions: https://github.com/vedpawar2254/Ano/actions
- Releases: https://github.com/vedpawar2254/Ano/releases
- Issues: Monitor for bug reports
- Never commit NPM_TOKEN - Use GitHub secrets
- Rotate tokens periodically - Every 3-6 months
- Use 2FA on npm - Enable at npmjs.com
- Review dependencies - Run
npm auditregularly
-
Announce Release
- Post on Twitter/LinkedIn
- Share in Claude Code community
- Create demo video
-
Monitor
- Watch for issues
- Check download stats
- Review user feedback
-
Iterate
- Fix bugs quickly
- Add requested features
- Keep CHANGELOG updated
-
Marketing
- Create tutorial blog posts
- Make demo videos
- Engage with users
Issues: https://github.com/vedpawar2254/Ano/issues Email: ved.pawar2024@rishihood.edu.in
# npm
npm publish --access public # Publish to npm
npm version patch # Bump version
npm pack --dry-run # Test package
# Vercel
vercel # Deploy preview
vercel --prod # Deploy production
vercel domains add example.com # Add domain
# Git
git push origin main --tags # Push with tags
git tag v0.1.0 # Create tag
# Development
npm run build:all # Build everything
npm run test # Run tests (when added)
npm link # Link for developmentYou're ready to deploy! 🚀