0.135.18 • Published 8 months ago

esm-worker v0.135.18

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

esm-worker

A Cloudflare worker handles all requests of esm.sh at the edge(earth).

  • Cache everything at the edge
  • Store modules in KV
  • Store assets in R2

Installation

npm install esm-worker@^0.135.0

Configuration

You need to add following configuration to your wrangler.toml:

kv_namespaces = [
  {
    binding = "KV",
    id = "YOUR_KV_ID",
    preview_id = "YOUR_PREVIEW_KV_ID"
  }
  # your other namespaces...
]

[vars]
ESM_ORIGIN = "https://esm.sh" # change to your self-hosting esm.sh server if needed
NPM_REGISTRY = "https://registry.npmjs.org/" # change to your private npm registry if needed
# your other vars...

[[r2_buckets]]
binding = "R2"
bucket_name = "YOUR_BUCKET_NAME"
preview_bucket_name = "YOUR_PREVIEW_BUCKET_NAME"

Other optional configurations in secrets:

  • If you are using a self-hosting esm.sh server with authSecret option, you need to add the following configuration:
    wrangler secret put ESM_TOKEN
  • If you are using a private npm registry, you need to add the following configuration:
    wrangler secret put NPM_TOKEN

Usage

Wrap your Cloudflare worker with the withESMWorker function:

import { withESMWorker } from "esm-worker";

// extend the `Env` interface
declare global {
  interface Env {
    // your other vars in `wrangler.toml` ...
  }
}

export default withESMWorker((req, env, ctx) => {
  const { url } = ctx;

  // using a custom homepage
  if (url.pathname === "/") {
    return new Response("<h1>Welcome to esm.sh!</h1>", {
      headers: { "Content-Type": "text/html" },
    });
  }

  // using the cache API
  if (url.pathname === "/boom") {
    return ctx.withCache(() =>
      new Response("Boom!", {
        headers: { "Cache-Control": "public; max-age=3600" },
      })
    );
  }

  // return void to let esm-worker handle the rest requests
});

Deploy to Cloudflare Workers

wrangler deploy
0.135.18

8 months ago

0.135.17

10 months ago

0.135.14

1 year ago

0.135.16

1 year ago

0.135.13

1 year ago

0.135.12

1 year ago

0.135.11

1 year ago

0.135.8

1 year ago

0.135.7

1 year ago

0.135.6

1 year ago

0.135.5

1 year ago

0.135.9

1 year ago

0.135.10

1 year ago

0.135.4

1 year ago

0.135.3

2 years ago

0.135.2

2 years ago

0.135.1

2 years ago

0.135.0

2 years ago

0.134.0

2 years ago

0.133.0

2 years ago

0.132.1

2 years ago

0.132.0

2 years ago

0.131.0

2 years ago

0.131.1

2 years ago

0.128.8

2 years ago

0.128.7

2 years ago

0.128.6

2 years ago

0.128.5

2 years ago

0.128.9

2 years ago

0.127.1

2 years ago

0.127.0

2 years ago

0.129.0

2 years ago

0.128.10

2 years ago

0.128.11

2 years ago

0.128.12

2 years ago

0.128.14

2 years ago

0.128.15

2 years ago

0.128.16

2 years ago

0.130.1

2 years ago

0.130.0

2 years ago

0.130.4

2 years ago

0.130.3

2 years ago

0.130.2

2 years ago

0.128.0

2 years ago

0.128.4

2 years ago

0.128.3

2 years ago

0.128.2

2 years ago

0.128.1

2 years ago

0.122.11

2 years ago

0.122.10

2 years ago

0.122.12

2 years ago

0.122.6

2 years ago

0.122.5

2 years ago

0.126.0

2 years ago

0.122.4

2 years ago

0.125.0

2 years ago

0.124.1

2 years ago

0.122.3

2 years ago

0.121.4

2 years ago

0.122.9

2 years ago

0.122.8

2 years ago

0.122.7

2 years ago

0.124.0

2 years ago

0.122.2

2 years ago

0.121.3

2 years ago

0.123.0

2 years ago

0.122.1

2 years ago

0.121.2

2 years ago

0.122.0

2 years ago

0.121.1

2 years ago

0.121.0

2 years ago

0.119.0

2 years ago

0.119.1

2 years ago

0.120.5

2 years ago

0.120.6

2 years ago

0.120.1

2 years ago

0.120.2

2 years ago

0.120.3

2 years ago

0.120.4

2 years ago

0.120.0

2 years ago

0.0.10

4 years ago

0.0.11

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago