npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

esbuild-serve-2

v0.0.4

Published

Development server for ESBuild with API proxy and livereload

Readme

esbuild-serve-2

Development server for ESBuild with API proxy and livereload.

Why?

Current esbuild-serve package is outdated and isn't maintained. ESBuild internal serve API is simple, but hasn't features like livereload, API proxy and HTML5 history API fallback

[WARNING] It's NOT a production server, only for development!

Features

  • Static files serving from ESBuild outdir option or dir serve option.
  • Serve index.html from main dir or given indexPath, supports HTML5 history API fallback.
  • Proxy API requests to prevent CORS errors.
  • Live reload opened tabs when (re)build completed.
  • Zero dependencies and small size. Server uses http module directly without large production HTTP libraries, like "express".

Installation

npm i esbuild-serve-2

Usage

Basic

By default server will start automatically at http://localhost:3000 after serve call. Port can be customized in second argument ServerOptions.

import path from 'path'
import serve from 'esbuild-serve-2'

serve(
  {
    entryPoints: ["./src/index.tsx"],
    outdir: path.resolve(__dirname, './dist'),
  },
  {
    indexPath: path.resolve(__dirname, './html/index.html'),
  }
);

Custom HTTP server

Custom HTTP server can be passed in ServerOptions. With this option server will not start automatically, call to server.listen() required.

import path from 'path'
import http from 'http'
import serve from 'esbuild-serve-2'

const server = http.createServer()

serve(
  {
    entryPoints: ["./src/index.tsx"],
    outdir: path.resolve(__dirname, './dist'),
  },
  {
    server,
    indexPath: path.resolve(__dirname, './html/index.html'),
  }
);

server.listen(3000)

Proxy API requests

import path from 'path'
import serve from 'esbuild-serve-2'

serve(
  {
    entryPoints: ["./src/index.tsx"],
    outdir: path.resolve(__dirname, './dist'),
  },
  {
    indexPath: path.resolve(__dirname, './html/index.html'),
    proxy: [
      { filter: /^\/api/, host: "localhost", port: 4000 },
      {
        filter: (req) => req.headers["content-type"] === "application/json",
        host: "localhost",
        port: 8080,
      },
    ],
  }
);

Options

Server Options

type ServerOptions = {
  dir: string; // Build output directory to serve files from
  indexPath?: string; // Custom path to index HTML file
  port?: number // Dev server port. Default: 3000
  proxy?: ProxyOptions[]; // Array of proxy configurations, see ProxyOptions below
  server?: http.Server; // Custom HTTP server
  verbose?: boolean; // Print request logs. Default: true
};

Proxy Options

type ProxyOptions = {
  filter: RegExp | { (req: http.IncomingMessage): boolean }; // Requests should match this filter
  host: string; // Destination server host
  https?: boolean; // Use https. Default: false
  port?: number; // Destination server port
};