Skip to content

Commit

Permalink
Migrate blog and docs starters to content collections (#5858)
Browse files Browse the repository at this point in the history
* docs: update README for `content/`

* chore: update env

* feat: update blog to use content collections

* chore: remove with-content starter

* fix: single quotes -> double

* feat: update docs starter to content collections

* refactor: config -> consts

* chore: import type

* edit: Astro will -> Use

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>

* chore: remove unused null check

* nit: spacing

* nit: `as Props` 1

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>

* nit: `as Props` 2

Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>

* chore: consistent CONSTS usage

* chore: `type` imports at top

* chore: consistent quote usage on YAML

* chore: remove `as Props` from docs

Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
  • Loading branch information
3 people authored Jan 18, 2023
1 parent 006405d commit 7d72aee
Show file tree
Hide file tree
Showing 66 changed files with 129 additions and 778 deletions.
3 changes: 3 additions & 0 deletions examples/blog/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Inside of your Astro project, you'll see the following folders and files:
├── public/
├── src/
│   ├── components/
│   ├── content/
│   ├── layouts/
│   └── pages/
├── astro.config.mjs
Expand All @@ -41,6 +42,8 @@ Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page

There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.

The `src/content/` directory contains "collections" of related Markdown and MDX documents. Use `getCollection()` to retrieve posts from `src/content/blog/`, and type-check your frontmatter using an optional schema. See [Astro's Content Collections docs](https://docs.astro.build/en/guides/content-collections/) to learn more.

Any static assets, like images, can be placed in the `public/` directory.

## 🧞 Commands
Expand Down
2 changes: 1 addition & 1 deletion examples/blog/src/components/Header.astro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
import HeaderLink from './HeaderLink.astro';
import { SITE_TITLE } from '../config';
import { SITE_TITLE } from '../consts';
---

<header>
Expand Down
5 changes: 0 additions & 5 deletions examples/blog/src/config.ts

This file was deleted.

File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
layout: "../../layouts/BlogPost.astro"
title: "First post"
description: "Lorem ipsum dolor sit amet"
pubDate: "Jul 08 2022"
Expand All @@ -14,4 +13,4 @@ Mollis nunc sed id semper risus in. Convallis a cras semper auctor neque. Diam s

Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Tortor posuere ac ut consequat semper viverra. Tellus mauris a diam maecenas sed enim ut sem viverra. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Arcu ac tortor dignissim convallis aenean et tortor at. Curabitur gravida arcu ac tortor dignissim convallis aenean et tortor. Egestas tellus rutrum tellus pellentesque eu. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Id donec ultrices tincidunt arcu. Id cursus metus aliquam eleifend mi.

Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: 'Markdown Style Guide'
description: 'Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro.'
pubDate: 'Jul 01 2022'
heroImage: '/placeholder-hero.jpg'
title: "Markdown Style Guide"
description: "Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro."
pubDate: "Jul 01 2022"
heroImage: "/placeholder-hero.jpg"
---

Here is a sample of some basic Markdown syntax that can be used when writing Markdown content in Astro.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
layout: "../../layouts/BlogPost.astro"
title: "Second post"
description: "Lorem ipsum dolor sit amet"
pubDate: "Jul 22 2022"
Expand All @@ -14,4 +13,4 @@ Mollis nunc sed id semper risus in. Convallis a cras semper auctor neque. Diam s

Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Tortor posuere ac ut consequat semper viverra. Tellus mauris a diam maecenas sed enim ut sem viverra. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Arcu ac tortor dignissim convallis aenean et tortor at. Curabitur gravida arcu ac tortor dignissim convallis aenean et tortor. Egestas tellus rutrum tellus pellentesque eu. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Id donec ultrices tincidunt arcu. Id cursus metus aliquam eleifend mi.

Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
layout: "../../layouts/BlogPost.astro"
title: "Third post"
description: "Lorem ipsum dolor sit amet"
pubDate: "Jul 15 2022"
Expand All @@ -14,4 +13,4 @@ Mollis nunc sed id semper risus in. Convallis a cras semper auctor neque. Diam s

Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Tortor posuere ac ut consequat semper viverra. Tellus mauris a diam maecenas sed enim ut sem viverra. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Arcu ac tortor dignissim convallis aenean et tortor at. Curabitur gravida arcu ac tortor dignissim convallis aenean et tortor. Egestas tellus rutrum tellus pellentesque eu. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Id donec ultrices tincidunt arcu. Id cursus metus aliquam eleifend mi.

Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ const blog = defineCollection({
title: z.string(),
description: z.string(),
// Transform string to Date object
pubDate: z.string().transform((str) => new Date(str)),
pubDate: z
.string()
.or(z.date())
.transform((val) => new Date(val)),
updatedDate: z
.string()
.optional()
Expand Down
1 change: 1 addition & 0 deletions examples/blog/src/env.d.ts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
/// <reference path="../.astro/types.d.ts" />
/// <reference types="astro/client" />
15 changes: 3 additions & 12 deletions examples/blog/src/layouts/BlogPost.astro
Original file line number Diff line number Diff line change
@@ -1,21 +1,12 @@
---
import type { CollectionEntry } from 'astro:content';
import BaseHead from '../components/BaseHead.astro';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
export interface Props {
content: {
title: string;
description: string;
pubDate?: string;
updatedDate?: string;
heroImage?: string;
};
}
type Props = CollectionEntry<'blog'>['data'];
const {
content: { title, description, pubDate, updatedDate, heroImage },
} = Astro.props;
const { title, description, pubDate, updatedDate, heroImage } = Astro.props;
---

<html lang="en">
Expand Down
2 changes: 1 addition & 1 deletion examples/blog/src/pages/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ Mollis nunc sed id semper risus in. Convallis a cras semper auctor neque. Diam s

Mattis ullamcorper velit sed ullamcorper morbi tincidunt. Tortor posuere ac ut consequat semper viverra. Tellus mauris a diam maecenas sed enim ut sem viverra. Venenatis urna cursus eget nunc scelerisque viverra mauris in. Arcu ac tortor dignissim convallis aenean et tortor at. Curabitur gravida arcu ac tortor dignissim convallis aenean et tortor. Egestas tellus rutrum tellus pellentesque eu. Fusce ut placerat orci nulla pellentesque dignissim enim sit amet. Ut enim blandit volutpat maecenas volutpat blandit aliquam etiam. Id donec ultrices tincidunt arcu. Id cursus metus aliquam eleifend mi.

Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
Tempus quam pellentesque nec nam aliquam sem. Risus at ultrices mi tempus imperdiet. Id porta nibh venenatis cras sed felis eget velit. Ipsum a arcu cursus vitae. Facilisis magna etiam tempor orci eu lobortis elementum. Tincidunt dui ut ornare lectus sit. Quisque non tellus orci ac. Blandit libero volutpat sed cras. Nec tincidunt praesent semper feugiat nibh sed pulvinar proin gravida. Egestas integer eget aliquet nibh praesent tristique magna.
59 changes: 0 additions & 59 deletions examples/blog/src/pages/blog.astro

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ const posts = (await getCollection('blog')).sort(
day: 'numeric',
})}
</time>
<a href={'/blog/' + post.slug}>{post.data.title}</a>
<a href={`/blog/${post.slug}/`}>{post.data.title}</a>
</li>
))
}
Expand Down
103 changes: 0 additions & 103 deletions examples/blog/src/pages/blog/markdown-style-guide.md

This file was deleted.

32 changes: 0 additions & 32 deletions examples/blog/src/pages/blog/using-mdx.mdx

This file was deleted.

2 changes: 1 addition & 1 deletion examples/blog/src/pages/index.astro
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import BaseHead from '../components/BaseHead.astro';
import Header from '../components/Header.astro';
import Footer from '../components/Footer.astro';
import { SITE_TITLE, SITE_DESCRIPTION } from '../config';
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';
---

<!DOCTYPE html>
Expand Down
16 changes: 11 additions & 5 deletions examples/blog/src/pages/rss.xml.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
import rss from '@astrojs/rss';
import { SITE_TITLE, SITE_DESCRIPTION } from '../config';
import { getCollection } from 'astro:content';
import { SITE_TITLE, SITE_DESCRIPTION } from '../consts';

export const get = () =>
rss({
export async function get(context) {
const posts = await getCollection('blog');
return rss({
title: SITE_TITLE,
description: SITE_DESCRIPTION,
site: import.meta.env.SITE,
items: import.meta.glob('./blog/**/*.{md,mdx}'),
site: context.site.href,
items: posts.map((post) => ({
...post.data,
link: `/blog/${post.slug}/`,
})),
});
}
2 changes: 1 addition & 1 deletion examples/docs/src/components/Footer/AvatarList.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
type Props = {
path: string;
};
const { path } = Astro.props as Props;
const { path } = Astro.props;
const resolvedPath = `examples/docs/${path}`;
const url = `https://api.github.com/repos/withastro/astro/commits?path=${resolvedPath}`;
const commitsURL = `https://github.com/withastro/astro/commits/main/${resolvedPath}`;
Expand Down
2 changes: 1 addition & 1 deletion examples/docs/src/components/Footer/Footer.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import AvatarList from './AvatarList.astro';
type Props = {
path: string;
};
const { path } = Astro.props as Props;
const { path } = Astro.props;
---

<footer>
Expand Down
Loading

0 comments on commit 7d72aee

Please sign in to comment.