Vite-plugin-server
This vite plugin allows developers to develop a backend server with NodeJS or Deno in the same codebase as the frontend code and get HMR!
Note: This is more or less a hack! Working of this plugin can change from one minor vite version to the next! Please report Bugs! This Plugin is in a alpha stage so expect breaking changes!
Install
Install this plugin with
yarn add -D vite-plugin-server
In vite.config.js import it like this:
import { defineConfig } from "vite";
import server from 'vite-plugin-server';
export default defineConfig(({command, mode}) => ({
build:
command === "build" && mode === "server"
? {
lib: {
entry: "./path/to/server/entry.ts",
formats: ["es"],
fileName: () => "server.mjs",
},
outDir: "server",
}
: {},
plugins: [
server()
]
}))
Deno
For Deno if you did the install step you are ready to go! Just start the vite server and after that start deno with:
deno run --allow-net -r http://localhost:3000/path/to/deno/entry.ts
If the HMR runs into a problem and wants to "reload" the process is ended and you have to manualy restart it or use a tool for that.
NodeJS
NodeJS is a bit complexer you the latest version (17.4). The needed API is not stable! So this can stop working with a new node relase!
Create a extra file called for example entry.mjs
and add the folowing code:
import 'http://localhost:3000/path/to/node/entry.ts'
Start it with
node --experimental-loader vite-plugin-server/node entry.mjs
Build
The server can be build with vite build --mode server
There is currently a bug where some dev code is included. So this is currently not production ready.
HMR
There are currently no plugins that enable HMR for different use cases. I will work on a for a Deno REST-API with oak but you basicly have to implement it on your own. Feel free to share your plugins!