#is it possible to access astro's import aliases like `astro:content` from outside of the `src` dir?
4 messages · Page 1 of 1 (latest)
Hi @delicate basalt. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave:
Astro provides a way to define and configure content collections using a src/content/config.ts file in your project. This file is automatically loaded by Astro and used to configure your content collections. Here's an example of how you can define a collection:
// 1. Import utilities from `astro:content`
import { defineCollection } from 'astro:content';
// 2. Define your collection(s)
const blogCollection = defineCollection({ /* ... */ });
// 3. Export a single `collections` object to register your collection(s)
// This key should match your collection directory name in "src/content"
export const collections = {
'blog': blogCollection,
};
(Source: Astro Documentation (https://docs.astro.build/en/guides/content-collections#defining-collections))
You can also define a schema for your collection to enforce consistent frontmatter or entry data within a collection. This schema guarantees that this data exists in a predictable form when you need to reference or query it. If any file violates its collection schema, Astro will provide a helpful error to let you know.
// Import the proper utilities from `astro:content`.
// Define each collection that you’d like to validate.
// Export a single `collections` object to register your collections.
(Source: Astro Documentation (https://docs.astro.build/en/guides/content-collections#defining-a-collection-schema))
However, if you're looking to run a pre-build script, you might want to consider using Astro's Integration API. It provides a injectScript option that allows you to inject a string of JavaScript content onto every page. This could be used to run some pre-build operations.
// Type: (stage: InjectedScriptStage, content: string) => void;
// A callback function to inject a string of JavaScript content onto every page.
(Source: Astro Documentation (https://docs.astro.build/en/reference/integrations-reference#injectscript-option))