Discord

πŸš€ GV (Go Vite)

GV is a blazing-fast, browser-native development server and build tool written in Go. It’s inspired by Vite but designed to run without Node.js, using the power of native ESM in modern browsers and CDN-based dependency resolution.

⚑ Powered by Go. πŸ”Œ Plugin-friendly. 🧠 Node-free.


πŸ’Ž Philosophy

We should be able to use JavaScript frameworks, without 'node' or any runtime, just your browser.


✨ Features

  • Native ESM support in modern browsers
  • CDN-based module fetching (e.g., esm.sh, skypack)
  • Local caching of remote modules
  • Hot Module Replacement (HMR)
  • Zero-config dev server
  • esbuild-based transpilation
  • babel-based transpilation
  • Plugin system (inspired by Vite/Rollup)
  • Written in Go with extensibility in mind
  • No Node.js required β€” ever
  • TypeScript support
  • Adapter to support any http server

Installation

For Linux, MacOS and Windows

curl -fsSL https://raw.githubusercontent.com/struckchure/gv/main/scripts/install.sh | bash

For Windows

irm https://raw.githubusercontent.com/struckchure/gv/main/scripts/install.ps1 | iex

πŸ”§ Getting Started

git clone https://github.com/struckchure/gv
cd gv/examples/react
go run .

Then open your browser to http://localhost:3000.


πŸ“¦ How It Works

  • πŸ“œ Transpiling: Uses babel internally for .ts, .jsx, .tsx, etc.
  • 🌐 CDN Resolution: Bare imports (like react) are rewritten to point to https://esm.sh/react and cached locally.
  • πŸ”₯ HMR: WebSocket server pushes updates to the browser with minimal reloads.
  • 🧩 Plugins: Extend GV with hooks like transform, resolveId, and load.

πŸ“ Project Structure

Well, your project structure can be anyhow you want, but here's a sample react project

.
β”œβ”€β”€ index.html
β”œβ”€β”€ main.go
β”œβ”€β”€ main.jsx
β”œβ”€β”€ router.js
└── routes
    β”œβ”€β”€ layout.jsx
    β”œβ”€β”€ login
    β”‚   └── page.jsx
    β”œβ”€β”€ page.jsx
    └── register
        └── page.jsx

Import from CDNs or local files directly:

import { createRoot } from "https://esm.sh/[email protected]/client";
import { RouterProvider } from "https://esm.sh/[email protected]";
import React from "https://esm.sh/[email protected]";

import { router } from "./router.js";

createRoot(document.getElementById("root")).render(
  <RouterProvider router={router} />
);

πŸ”Œ Plugin API

Check here.


πŸ“œ License

MIT Β© 2025 Mohammed Al-Ameen

Top categories

Loading Svelte Themes