astro/examples/with-content/README.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

53 lines
2.2 KiB
Markdown
Raw Normal View History

Content Collections (#5291) * feat: port content plugin as-is * feat: add `fetchContent` to `.astro` * refactor: move more logic to content-internals * refactor: move internals -> content dir * feat: nested dir support * feat: add with-content playground * edit: update README * fix: serialize route pattern for Netlify edge Co-authored-by: Jackie Macharia <jackiewmacharia> * wip: add ?astro-asset-ssr flag * wip: exclude astro-ssr-asset styles from build * revert: SSR asset flag babel changes * feat: only load CSS when mdx is rendered! * fix(vercel): Include all files inside `dist/` instead of only `entry.mjs` (#5175) * chore: only-allow pnpm (#5131) * [MDX] Support `recmaPlugins` config (#5146) * feat: support recma plugins * chore: add `test:match` to MDX * chore: changeset * docs: add recmaPlugins to README * removes default content-visibility styles from image components (#5180) * wip: check renderContent works * nit: injectDelayedAssetPlugin doesn't need enforce * feat: render content with generated entries * feat: renderContent style injection POC * wip: scrappy renderContent binding * deps: parse-imports * feat: only bind renderContent when imported * feat: new-and-improved render-content * fix: update example to use render-content * refactor: extract normalizeFilename helper * feat: move renderContent to `.astro` * feat: add `getStaticPaths` demo 👀 * chore: remove console log * refactor: internals -> internal * fix: style bleed on dynamic routes * chore: remove console log * refactor: move rendercontentmap inside same file * fix: style bleed in dev! * feat: clean up example * refactor: curry generateContent * nit: add datetime demo * refactor: rename and move content plugins * feat: granular content updates in development * chore: console.log * refactor: move write logic, fix edge cases * fix: use z.any() when ~schema is missing * refactor: clean up logging * fix: add delayed asset flag to render map * fix: use new server loader * chore: import type * fix: split delayed assets to separate chunks * chore: bad merge changesets * feat: rework content map to Vite globs * fix: formatted errors * fix: get `renderContent` working with new APIs * refactor: rename to getCollection, getEntry, renderEntry * feat: streamline type alias! * fix: check schema import is an import * refactor: change ~schema -> index with defineCollection * feat: auto apply env.d.ts reference * feat: expose `headings` on `renderEntry` * refactor: expose zod from astro/zod * feat: add Collection util type * refactor: generated types in src/content/ * edit: remove env.d.ts change from with-content * feat: collectionToPaths utility * refactor: migrate `examples/blog` * refactor: simplify [...slug] * fix: invalid date * fix: renderEntry * feat: migrate examples/docs to content! * refactor: union -> enum * fix: remove duplicate header * chore: changeset * Revert "fix: serialize route pattern for Netlify edge" This reverts commit ac46a0d3238af1e6f8c3b8f235163385be1ff732. * fix: lint * fix: include zod in package files * chore: push type gen for astro check * feat: move to single defineCollections file * feat: move examples to new collections model * chore: type check valid collection names * fix: ignore collections path in err logs * refactor: content/index -> content/config * refactor: defineCollections -> defineCollection * fix: update docs to defineCollection * chore: update with-content to new `astro:content` setup * fix: renderEntry styles * fix: bad Collection type * fix: blog types generated * feat: expose injectedFrontmatter on renderEntry * chore: `import type` * chore: add MDX to changeset * fix: template package file * fix: unneeded log on content config change * chore: add `injectedFrontmatter` to generated types * fix: escape import.meta.env in `body` * fix: escape import.meta.env in frontmatter * chore: unused import * fix: use URL for config pathname * feat: allow zod async transforms * deps: devalue * feat: custom slugs + better type checking * fix: update types on config added or removed * chore: add error msg for MDX preview release * refactor: restore old normalizeFilename * fix: add loadContentConfig error classes back * Add initial tests for renderEntry * add fixture tests * Use head propagation APIs in renderEntry * chore: new type gen * fix: sort content keys before writing * fix: avoid writing '.' collection with warning * chore: docs types generated * fix: generated types only once in build * fix: use relative path to config for git * chore: update generated types * fix: glob pattern on valid exts * feat: warn on possible collection typos * chore: better error on bad lazy import * fix: clear gray-matter cache for rawData * fix: wait for config file while generating * test: get collection and get entry basic * test: multiple collections and entries * test: add publishedDate test on entry * tests: getStaticPaths integration * test: ssr endpoint integration * chore: consistent test names * refactor: simplify generates... test * chore: tests lockfile * feat: add `experimental` flag * chore: revert blog and docs examples * chore: add experimental flag to with-content * refactor: reuse contentFileExts * refactor: make contentCollectionCss required * chore: remove parse-imports dependency * chore: remove unresolved idea redundancy * chore: update changeset to minor v * chore: clean up with-content pass 1 * refactor: de-monolith vite-plugin-content * chore: remove maximum jank warning (it's acceptable jank) * refactor: extract types-generator to separate file * refactor: onEvent -> handleEvent * edit: change content log to "types generated" * fix: more experimental checks in prod build * refactor: 2 jsToTreeNode calls -> 1 * feat: change with-content example to blog example * fix: Content component type * Fix use of renderEntry within a slot * fix: warn for non-underscore _ files, refine logs * chore: Content type in tests * fix: types no updating with config changes * fix: remove `result: SSRResult` type * chore: entry var shadowing * fix: bad experimental flag call * wip: skip render entry tests * fix: path resolution for .relative on windows * chore: remove dead code * wip: log entryPath into * fix: use URL for entry * refactor: getEntryInfo normalization * refactor: move debounce to queueEvent only * fix: resolve loader on config error * fix: pathToFileURL -> new URL * fix: dangerous pathname comparison * refactor: move rawEvent -> event mapping to queueEvent * fix: bad type * wip: remove mkdir call * wip: log content paths * fix: more bad paths * wip: more logs * fix: correct glob path * fix: normalize virtual mod path * fix: content server file paths * chore: remove render entry test skip * wip: skip renderEntry tests (windows issues?) * chore: remove console log * feat: renderEntry -> render * chore: add `--experimental-content-collections` * refactor: only skip renderEntry tests on windows * refactor: index.ts barrel export * fix: cli type error * fix: proper test skip on windows * refactor: remove collectionToPaths :( * refactor: use AstroError for frontmatter error * nit: its schema, .* * fix: bad isWindows import * fix: await mod -> mod = await Co-authored-by: Juan Martín Seery <me@juanm04.com> Co-authored-by: 花果山大圣 <316783812@qq.com> Co-authored-by: Tony Sullivan <tony.f.sullivan@outlook.com> Co-authored-by: Matthew Phillips <matthew@skypack.dev> Co-authored-by: bholmesdev <bholmesdev@gmail.com>
2022-12-16 19:19:53 +00:00
# Astro Content Collections (Experimental)
This demos our Blog Starter using **[the experimental Content Collections API.](https://docs.astro.build/en/guides/content-collections/)**
Content Collections (#5291) * feat: port content plugin as-is * feat: add `fetchContent` to `.astro` * refactor: move more logic to content-internals * refactor: move internals -> content dir * feat: nested dir support * feat: add with-content playground * edit: update README * fix: serialize route pattern for Netlify edge Co-authored-by: Jackie Macharia <jackiewmacharia> * wip: add ?astro-asset-ssr flag * wip: exclude astro-ssr-asset styles from build * revert: SSR asset flag babel changes * feat: only load CSS when mdx is rendered! * fix(vercel): Include all files inside `dist/` instead of only `entry.mjs` (#5175) * chore: only-allow pnpm (#5131) * [MDX] Support `recmaPlugins` config (#5146) * feat: support recma plugins * chore: add `test:match` to MDX * chore: changeset * docs: add recmaPlugins to README * removes default content-visibility styles from image components (#5180) * wip: check renderContent works * nit: injectDelayedAssetPlugin doesn't need enforce * feat: render content with generated entries * feat: renderContent style injection POC * wip: scrappy renderContent binding * deps: parse-imports * feat: only bind renderContent when imported * feat: new-and-improved render-content * fix: update example to use render-content * refactor: extract normalizeFilename helper * feat: move renderContent to `.astro` * feat: add `getStaticPaths` demo 👀 * chore: remove console log * refactor: internals -> internal * fix: style bleed on dynamic routes * chore: remove console log * refactor: move rendercontentmap inside same file * fix: style bleed in dev! * feat: clean up example * refactor: curry generateContent * nit: add datetime demo * refactor: rename and move content plugins * feat: granular content updates in development * chore: console.log * refactor: move write logic, fix edge cases * fix: use z.any() when ~schema is missing * refactor: clean up logging * fix: add delayed asset flag to render map * fix: use new server loader * chore: import type * fix: split delayed assets to separate chunks * chore: bad merge changesets * feat: rework content map to Vite globs * fix: formatted errors * fix: get `renderContent` working with new APIs * refactor: rename to getCollection, getEntry, renderEntry * feat: streamline type alias! * fix: check schema import is an import * refactor: change ~schema -> index with defineCollection * feat: auto apply env.d.ts reference * feat: expose `headings` on `renderEntry` * refactor: expose zod from astro/zod * feat: add Collection util type * refactor: generated types in src/content/ * edit: remove env.d.ts change from with-content * feat: collectionToPaths utility * refactor: migrate `examples/blog` * refactor: simplify [...slug] * fix: invalid date * fix: renderEntry * feat: migrate examples/docs to content! * refactor: union -> enum * fix: remove duplicate header * chore: changeset * Revert "fix: serialize route pattern for Netlify edge" This reverts commit ac46a0d3238af1e6f8c3b8f235163385be1ff732. * fix: lint * fix: include zod in package files * chore: push type gen for astro check * feat: move to single defineCollections file * feat: move examples to new collections model * chore: type check valid collection names * fix: ignore collections path in err logs * refactor: content/index -> content/config * refactor: defineCollections -> defineCollection * fix: update docs to defineCollection * chore: update with-content to new `astro:content` setup * fix: renderEntry styles * fix: bad Collection type * fix: blog types generated * feat: expose injectedFrontmatter on renderEntry * chore: `import type` * chore: add MDX to changeset * fix: template package file * fix: unneeded log on content config change * chore: add `injectedFrontmatter` to generated types * fix: escape import.meta.env in `body` * fix: escape import.meta.env in frontmatter * chore: unused import * fix: use URL for config pathname * feat: allow zod async transforms * deps: devalue * feat: custom slugs + better type checking * fix: update types on config added or removed * chore: add error msg for MDX preview release * refactor: restore old normalizeFilename * fix: add loadContentConfig error classes back * Add initial tests for renderEntry * add fixture tests * Use head propagation APIs in renderEntry * chore: new type gen * fix: sort content keys before writing * fix: avoid writing '.' collection with warning * chore: docs types generated * fix: generated types only once in build * fix: use relative path to config for git * chore: update generated types * fix: glob pattern on valid exts * feat: warn on possible collection typos * chore: better error on bad lazy import * fix: clear gray-matter cache for rawData * fix: wait for config file while generating * test: get collection and get entry basic * test: multiple collections and entries * test: add publishedDate test on entry * tests: getStaticPaths integration * test: ssr endpoint integration * chore: consistent test names * refactor: simplify generates... test * chore: tests lockfile * feat: add `experimental` flag * chore: revert blog and docs examples * chore: add experimental flag to with-content * refactor: reuse contentFileExts * refactor: make contentCollectionCss required * chore: remove parse-imports dependency * chore: remove unresolved idea redundancy * chore: update changeset to minor v * chore: clean up with-content pass 1 * refactor: de-monolith vite-plugin-content * chore: remove maximum jank warning (it's acceptable jank) * refactor: extract types-generator to separate file * refactor: onEvent -> handleEvent * edit: change content log to "types generated" * fix: more experimental checks in prod build * refactor: 2 jsToTreeNode calls -> 1 * feat: change with-content example to blog example * fix: Content component type * Fix use of renderEntry within a slot * fix: warn for non-underscore _ files, refine logs * chore: Content type in tests * fix: types no updating with config changes * fix: remove `result: SSRResult` type * chore: entry var shadowing * fix: bad experimental flag call * wip: skip render entry tests * fix: path resolution for .relative on windows * chore: remove dead code * wip: log entryPath into * fix: use URL for entry * refactor: getEntryInfo normalization * refactor: move debounce to queueEvent only * fix: resolve loader on config error * fix: pathToFileURL -> new URL * fix: dangerous pathname comparison * refactor: move rawEvent -> event mapping to queueEvent * fix: bad type * wip: remove mkdir call * wip: log content paths * fix: more bad paths * wip: more logs * fix: correct glob path * fix: normalize virtual mod path * fix: content server file paths * chore: remove render entry test skip * wip: skip renderEntry tests (windows issues?) * chore: remove console log * feat: renderEntry -> render * chore: add `--experimental-content-collections` * refactor: only skip renderEntry tests on windows * refactor: index.ts barrel export * fix: cli type error * fix: proper test skip on windows * refactor: remove collectionToPaths :( * refactor: use AstroError for frontmatter error * nit: its schema, .* * fix: bad isWindows import * fix: await mod -> mod = await Co-authored-by: Juan Martín Seery <me@juanm04.com> Co-authored-by: 花果山大圣 <316783812@qq.com> Co-authored-by: Tony Sullivan <tony.f.sullivan@outlook.com> Co-authored-by: Matthew Phillips <matthew@skypack.dev> Co-authored-by: bholmesdev <bholmesdev@gmail.com>
2022-12-16 19:19:53 +00:00
[![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/withastro/astro/tree/latest/examples/with-content)
[![Open with CodeSandbox](https://assets.codesandbox.io/github/button-edit-lime.svg)](https://codesandbox.io/s/github/withastro/astro/tree/latest/examples/with-content)
> 🧑‍🚀 **Seasoned astronaut?** Delete this file. Have fun!
## 🚀 Project Structure
Inside of your Astro project, you'll see the following folders and files:
```
├── public/
├── src/
│ └── content/
│ └── blog/
│ ├── first.md
│ └── second.md
│ └── config.ts
│   ├── components/
│   ├── layouts/
│   └── pages/
├── astro.config.mjs
├── README.md
├── package.json
└── tsconfig.json
```
`src/content/` contains "collections" of related Markdown and MDX documents. Astro will generate a `getCollection` function to retrieve posts from `src/content/`, and type-check your frontmatter using an optional schema (see `src/content/config.ts`).
## 🧞 Commands
All commands are run from the root of the project, from a terminal:
| Command | Action |
| :--------------------- | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:3000` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro --help` | Get help using the Astro CLI |
## 👀 Want to learn more?
Check out [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
## Credit
This theme is based off of the lovely [Bear Blog](https://github.com/HermanMartinus/bearblog/).