Falldot / esbuild-dev-server

This plugin allows you to start a local server with hot reloading with Esbuild
MIT License
48 stars 1 forks source link
dev dev-server devserver esbuild esbuild-dev-server esbuild-plugin go golang javascript live-server liveserver plugin server typescript

esbuild-dev-server

This plugin allows you to start a local server with hot reloading for Esbuild

More community plugins

Installation

npm

npm i esbuild-dev-server -D

yarn

yarn add esbuild-dev-server -D

go

go get github.com/Falldot/esbuild-dev-server

Configuration

How to use?

Node.js

esbuild.config.js

const {build} = require("esbuild")
const esBuildDevServer = require("esbuild-dev-server")

esBuildDevServer.start(
    build({
        entryPoints: ["src/index.js"],
        outdir: "dist",
        incremental: true,
        // and more options ...
    }),
    {
        port:      "8080", // optional, default: 8080
        watchDir:  "src", // optional, default: "src"
        index:     "dist/index.html", // optional
        staticDir: "dist", // optional
        onBeforeRebuild: {}, // optional
        onAfterRebuild:  {}, // optional
    }
)

package.json

"scripts": {
    "dev": "node esbuild.config.js",
},

dist/index.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <div id="root"></div>
        <script src="https://github.com/Falldot/esbuild-dev-server/raw/master/index.js"></script>
    </body>
</html>

Golang

esbuild.config.go

package main

import (
    devserver "github.com/Falldot/esbuild-dev-server"
    "github.com/evanw/esbuild/pkg/api"
)

func main() {
    devserver.Start(
        api.Build(api.BuildOptions{
            EntryPoints: []string{"src/index.js"},
            Outdir:      "dist",
            Incremental: true,
            // and more options ...
        }),
        devserver.Options{
            Port:      "8080", // optional, default: 8080
            WatchDir:  "src", // optional, default: "src"
            Index:     "dist/index.html", // optional
            StaticDir: "dist", // optional
            OnBeforeRebuild: func() {}, // optional
            OnAfterRebuild:  func() {}, // optional
        },
    )
}

package.json

"scripts": {
    "dev": "go esbuild.config.go",
},