astro-typed-ids
v0.1.4
Published
An Astro integration to get typed ids for Content Layer entries, matching Astro 4 behavior.
Maintainers
Readme
astro-typed-ids
This is an Astro integration to get typed ids for Content Layer entries, matching Astro 4 behavior.
Background
In Astro 4, ids/slugs of content entries where stricter by default. While it's convenient for manual usages, it impacted performance on bigger collections. So the team decided to make the types a bit more loose, ids now are typed as string.
To make transitioning to the Content Layer easier, or if you want this behavior for some more manual usage (please use it on small datasets only!), this integration is for you.
Migrating from legacy Content Collections
// astro.config.mjs
+import typedIds from "astro-typed-ids"
export default defineConfig({
integrations: [
+ typedIds({ collections: ["blog"] }),
],
})
// some file
import {
- CollectionEntry
+ CollectionId
} from "astro:content"
interface Props {
- id: CollectionEntry<"blog">["slug"] // string
+ id: CollectionId<"blog"> // "foo" | "bar" | "..."
}Usage
Prerequisites
- Astro
>= 5.0.0-beta.10 - You must be using the Content Layer (ie. not having the
legacy.collectionsflag enabled, nor having collections defined without aloader)
Installation
Install the integration automatically using the Astro CLI:
pnpm astro add astro-typed-idsnpx astro add astro-typed-idsyarn astro add astro-typed-idsOr install it manually:
- Install the required dependencies
pnpm add astro-typed-idsnpm install astro-typed-idsyarn add astro-typed-ids- Add the integration to your astro config
+import typedIds from "astro-typed-ids";
export default defineConfig({
integrations: [
+ typedIds(),
],
});Configuration
The integration has one required collections options. It accepts an array of collections names.
Contributing
This package is structured as a monorepo:
playgroundcontains code for testing the packagepackagecontains the actual package
Install dependencies using pnpm:
pnpm i --frozen-lockfileStart the playground and package watcher:
pnpm devYou can now edit files in package. Please note that making changes to those files may require restarting the playground dev server.
Licensing
MIT Licensed. Made with ❤️ by Florian Lefebvre.
