@kobonostudio/vite-plugin-github-deploy
v1.0.0
Published
Vite plugin to automate deployment to GitHub using Git and optional split/public repositories.
Maintainers
Readme
🚀 vite-plugin-github-deploy
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.
✨ Features
- 🔐 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.jsfor unified setup
⚙️ Supported Deployment Modes
| 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.
📦 Installation
npm install --save-dev @kobonostudio/vite-plugin-github-deploy🔧 Configuration (starter.config.js)
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',
},
}🔌 Usage in vite.config.js
import { defineConfig } from 'vite'
import githubDeployPlugin from '@kobonostudio/vite-plugin-github-deploy'
export default defineConfig({
plugins: [githubDeployPlugin()],
})🚀 Trigger Deployment
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:pagesThen trigger deployment using the DEPLOY flag:
DEPLOY=true npm run buildThis will:
- ✅ Verify
gitandghare 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
🧪 Examples
➤ public-only
- Project pushed entirely to
[email protected]:user/project.git - Ideal for public showcase or open source
➤ split
dist/→ public repo (user/cdn-repo)- Source → private repo (
user/source-repo) - Perfect for Webflow CDN or static assets
📁 What gets pushed?
| Folder | Mode | Repo type |
| --------- | ----------- | --------- |
| . (all) | public-only | Public |
| dist/ | split | Public |
| . (all) | split | Private |
🛠 Requirements
- Node.js ≥ 18
gitinstalledghGitHub CLI (gh auth loginrequired)- SSH key (
id_ed25519) added to GitHub - Internet access
🧠 Author
Made with ❤️ by Pierre Lovenfosse
📄 License
MIT — © Pierre Lovenfosse
