createResolver
createResolver
allows you to resolve paths relative to the integration folder easily.
import type { AstroIntegration } from "astro";import { createResolver } from "astro-integration-kit";
export default function myIntegration(): AstroIntegration { const { resolve } = createResolver(import.meta.url);
return { name: "my-integration", hooks: { "astro:config:setup": ({ addDevToolbarApp }) => { addDevToolbarApp(resolve("./plugin.ts")); } } }}
Why should you use it?
We think it provides a better DX. Instead of having to do some back and forth between
your code and your package.json
exports
fields, you can just use some intuitive
relative paths!
{ "name": "package-name", "exports": { "pages/my-route.astro": "./src/pages/my-route.astro", "plugin.ts": "./src/plugin.ts" }}
import type { AstroIntegration } from "astro";import { createResolver } from "astro-integration-kit";
export default function myIntegration(): AstroIntegration { const { resolve } = createResolver(import.meta.url); return { name: "my-integration", hooks: { "astro:config:setup": ({ injectRoute, addDevToolbarApp }) => { injectRoute({ pattern: "/my-route", entrypoint: "package-name/pages/my-route.astro" entrypoint: resolve("./pages/my-route.astro") }) addDevToolbarApp( "package-name/plugin.ts" resolve("./plugin.ts") ) } } }}
Usage
Always pass import.meta.url
to createResolver
! That’s the equivalent of the
old __filename
. This way, resolve
will always create a valid path relatively,
no matter its location in node_modules
, package managers madness etc
We recommend calling it in setup
to easily access resolve
in any hook.