diff --git a/.changeset/spotty-jokes-arrive.md b/.changeset/spotty-jokes-arrive.md new file mode 100644 index 000000000000..8638f8b8b654 --- /dev/null +++ b/.changeset/spotty-jokes-arrive.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Warn on empty content collections diff --git a/packages/astro/src/content/runtime.ts b/packages/astro/src/content/runtime.ts index eeaa60e6c984..2c5a120ca965 100644 --- a/packages/astro/src/content/runtime.ts +++ b/packages/astro/src/content/runtime.ts @@ -1,6 +1,5 @@ import type { MarkdownHeading } from '@astrojs/markdown-remark'; import { ZodIssueCode, string as zodString } from 'zod'; -import type { AstroIntegration } from '../@types/astro.js'; import { AstroError, AstroErrorData } from '../core/errors/index.js'; import { prependForwardSlash } from '../core/path.js'; import { @@ -56,7 +55,9 @@ export function createGetCollection({ } else if (collection in dataCollectionToEntryMap) { type = 'data'; } else { - return warnOfEmptyCollection(collection); + // eslint-disable-next-line no-console + console.warn(`The collection **${collection}** does not exist or is empty. Ensure a collection directory with this name exists.`); + return; } const lazyImports = Object.values( type === 'content' @@ -390,16 +391,3 @@ type PropagatedAssetsModule = { function isPropagatedAssetsModule(module: any): module is PropagatedAssetsModule { return typeof module === 'object' && module != null && '__astroPropagation' in module; } - -function warnOfEmptyCollection(collection: string): AstroIntegration { - return { - name: 'astro-collection', - hooks: { - 'astro:server:start': ({ logger }) => { - logger.warn( - `The collection **${collection}** does not exist or is empty. Ensure a collection directory with this name exists.` - ); - }, - }, - }; -} diff --git a/packages/astro/src/core/errors/errors-data.ts b/packages/astro/src/core/errors/errors-data.ts index e4fe3554046b..ace362cefc7a 100644 --- a/packages/astro/src/core/errors/errors-data.ts +++ b/packages/astro/src/core/errors/errors-data.ts @@ -1158,6 +1158,7 @@ export const ContentSchemaContainsSlugError = { /** * @docs * @message A collection queried via `getCollection()` does not exist. + * @deprecated Collections that do not exist no longer result in an error. A warning is omitted instead. * @description * When querying a collection, ensure a collection directory with the requested name exists under `src/content/`. */