deno_serve_modules
A very simple HTTP handler to serve modules from the Deno cache, modelled on
serveDir in std lib.
It takes the URLs path following the urlRoot, prepends the moduleRoot and
then resolves this as a bare specifier using import.meta.resolve. So the idea
is that you can map these URLs to any module you want in your import map.
Also, for .ts/.tsx/.jsx files, the JS file generated and cached by Deno
will be returned.
This requires these modules to have already be transpiled/cached by deno, so
you’ll want to deno cache them or ensure they are imported from server module.
Permissions
This module makes use of deno_cache to read
the files, and therefore requires the appropriate permissions that it requires.
See those docs for full details.
Example
Given the following simple server:
await serve((req) =>
serveMod(req, {
moduleRoot: "$public",
urlRoot: "mod",
})
);and the import map:
{
"imports": {
"$public/hello.ts": "./hello.ts"
}
}The URL /mod/hello.ts will resolve to the transpiled JS of $public/hello.ts.
Known Bugs
There are a couple of outstanding bugs in deno_cache awaiting PR merges…
Until those issues are solved, this module will depend upon a patched fork of
deno_cache imported directly from my own
repository.