A Vite plugin to automate GitHub deployment using git
, gh
CLI, and @octokit/rest
.
Perfect for JAMStack, Webflow, or static sites needing CDN-ready delivery.
- 🔐 SSH support + GitHub authentication (
gh auth login
) - 📁 Pushes either:
- entire project (source + dist)
- or
dist/
only
- 🧠 Smart detection of existing repositories
- 🔄 Automatically creates repos via GitHub API (
@octokit/rest
) - 🧰 Works with
starter.config.js
for unified setup
Mode | Description |
---|---|
none |
Skips deployment entirely |
public-only |
Pushes full project (source + dist/ ) to a public repo |
split |
Pushes source code to private repo, dist/ folder to public repo |
Each mode fits a different use case:
public-only
: For simple public open-source projects.split
: When your code is private but output must be public (e.g. CDN via jsDelivr).none
: When you want to manage deployment manually.
npm install --save-dev @kobonostudio/vite-plugin-github-deploy
At your project root, create:
export default {
cdn: {
baseUrl: 'https://cdn.jsdelivr.net/gh',
user: 'your-github-username-or-org',
repo: 'your-public-repo',
branch: 'main',
org: true, // optional (true if you're using a GitHub org)
},
deploy: {
mode: 'split', // 'none' | 'public-only' | 'split'
publicRepo: 'webflow-assets',
privateRepo: 'webflow-source',
branch: 'main',
},
}
import { defineConfig } from 'vite'
import githubDeployPlugin from '@kobonostudio/vite-plugin-github-deploy'
export default defineConfig({
plugins: [githubDeployPlugin()],
})
Before deploying, you must manually build your project (e.g. with npm run build
or npm run build:pages
):
npm run build
#or
npm run build:pages
Then trigger deployment using the DEPLOY flag:
DEPLOY=true npm run build
This will:
- ✅ Verify
git
andgh
are installed - 🔐 Ensure SSH key exists and is configured
- 🤝 Authenticate with GitHub CLI
- 📁 Create or detect GitHub repos
- 🚀 Push files to correct repos based on deployment mode
- Project pushed entirely to
git@github.com:user/project.git
- Ideal for public showcase or open source
dist/
→ public repo (user/cdn-repo
)- Source → private repo (
user/source-repo
) - Perfect for Webflow CDN or static assets
Folder | Mode | Repo type |
---|---|---|
. (all) |
public-only | Public |
dist/ |
split | Public |
. (all) |
split | Private |
- Node.js ≥ 18
git
installedgh
GitHub CLI (gh auth login
required)- SSH key (
id_ed25519
) added to GitHub - Internet access
Made with ❤️ by Pierre Lovenfosse
MIT — © Pierre Lovenfosse