diff --git a/src/content/docs/ko/guides/markdown-content.mdx b/src/content/docs/ko/guides/markdown-content.mdx
index b06dcfd9ccb01..f041100554e10 100644
--- a/src/content/docs/ko/guides/markdown-content.mdx
+++ b/src/content/docs/ko/guides/markdown-content.mdx
@@ -1,6 +1,6 @@
---
-title: Markdown & MDX
-description: Astro에서 Markdown 또는 MDX를 사용하여 콘텐츠를 만드는 방법을 알아보세요.
+title: Astro에서 Markdown 사용하기
+description: Astro에서 Markdown을 사용하여 콘텐츠를 만드는 방법을 알아보세요.
i18nReady: true
---
import Since from '~/components/Since.astro';
@@ -9,220 +9,27 @@ import RecipeLinks from "~/components/RecipeLinks.astro";
import ReadMore from '~/components/ReadMore.astro';
import { Steps } from '@astrojs/starlight/components';
-[Markdown](https://daringfireball.net/projects/markdown/)은 일반적으로 블로그 게시물 및 문서와 같이 텍스트가 많은 콘텐츠를 작성하는 데 사용됩니다. Astro에는 title, description, tags와 같은 사용자 정의 메타데이터를 정의하기 위해 [프런트매터 YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f)도 포함할 수 있는 표준 Markdown 파일에 대한 기본 지원이 포함되어 있습니다.
+[Markdown](https://daringfireball.net/projects/markdown/)은 일반적으로 블로그 게시물 및 문서와 같이 텍스트가 많은 콘텐츠를 작성하는 데 사용됩니다. Astro에는 title, description, tags와 같은 사용자 정의 속성을 정의하기 위해 [프런트매터 YAML](https://dev.to/paulasantamaria/introduction-to-yaml-125f)도 포함할 수 있는 Markdown 파일에 대한 기본 지원이 포함되어 있습니다.
-[@astrojs/mdx 통합](/ko/guides/integrations-guide/mdx/)이 설치되면 Astro는 Markdown 콘텐츠의 JavaScript 표현식 및 컴포넌트 지원과 같은 추가 기능을 제공하는 [MDX](https://mdxjs.com/) (`.mdx`) 파일도 지원합니다.
+Astro에서는 Markdown으로 콘텐츠를 작성한 다음 `.astro` 컴포넌트에 이를 렌더링할 수 있습니다. 이는 콘텐츠용으로 설계된 친숙한 작성 형식과 Astro의 컴포넌트 구문 및 아키텍처의 유연성을 결합한 것입니다.
-Markdown 콘텐츠를 작성하려면 두 가지 유형의 파일 중 하나 또는 두 가지를 모두 사용하세요!
+Markdown에 컴포넌트 및 JSX 표현식을 포함하는 등의 추가 기능을 사용하려면 [`@astrojs/mdx` 통합](/ko/guides/integrations-guide/mdx/)을 추가하여 [MDX](https://mdxjs.com/)로 Markdown 콘텐츠를 작성하세요.
-## Markdown 및 MDX 페이지
+## Markdown 파일 구성하기
-### 콘텐츠 컬렉션
+로컬 Markdown 파일은 `src/` 디렉터리 내 어디에나 보관할 수 있습니다. 단일 로컬 Markdown 파일은 `import` 문을 사용하여 `.astro` 컴포넌트로 가져올 수 있으며, 여러 파일을 한 번에 쿼리하기 위해서는 Vite의 `import.meta.glob()`을 사용할 수 있습니다.
-Astro의 특별한 `src/content/` 폴더에서 Markdown 및 MDX 파일을 관리할 수 있습니다. [콘텐츠 컬렉션](/ko/guides/content-collections/)은 콘텐츠를 구성하고, 프런트매터의 유효성을 검사하고, 콘텐츠 작업 중 자동 TypeScript 타입 안전성을 제공하는 데 도움이 됩니다.
+연관된 Markdown 파일 그룹이 있는 경우 [컬렉션으로 정의](/ko/guides/content-collections/)하는 것을 고려해 보세요. 이렇게 하면 파일 시스템의 어느 곳에나 또는 원격으로 Markdown 파일을 저장할 수 있는 등 여러 가지 이점이 있습니다.
-
-- src/content/
- - **newsletter/**
- - week-1.md
- - week-2.md
- - **authors/**
- - grace-hopper.md
- - alan-turing.md
-
+컬렉션을 사용하면 콘텐츠별로 최적화된 API를 사용하여 콘텐츠를 쿼리하고 렌더링할 수도 있습니다. 컬렉션은 블로그 게시물이나 제품 항목과 같이 동일한 구조를 공유하는 데이터 집합을 위한 것입니다. 스키마에서 해당 형태를 정의하면 편집기에서 유효성 검사, 타입 안전, 인텔리센스를 사용할 수 있습니다.
-[Astro의 콘텐츠 컬렉션](/ko/guides/content-collections/) 사용에 대해 자세히 알아보세요.
+{/* 파일 가져오기 대신 [콘텐츠 컬렉션을 사용하는 경우](/ko/guides/content-collections/#when-to-create-a-collection)에 대해 자세히 알아보세요. */}
-### 파일 기반 라우팅
+## 동적 JSX 유사 표현식
-Astro는 `/src/pages/` 디렉터리의 `.md` (또는 대체 지원 확장자) 또는 `.mdx` 파일을 페이지로 처리합니다.
+Markdown 파일을 가져오거나 쿼리한 후에는 프런트매터 데이터와 본문 콘텐츠를 포함하는 `.astro` 컴포넌트에 동적 HTML 템플릿을 작성할 수 있습니다.
-이 디렉터리나 하위 디렉터리에 파일을 배치하면 파일의 경로 이름을 사용하여 페이지 경로가 자동으로 빌드됩니다.
-
-```markdown
----
-# Example: src/pages/page-1.md
-title: Hello, World
----
-
-# Hi there!
-
-This Markdown file creates a page at `your-domain.com/page-1/`
-
-It probably isn't styled much, but Markdown does support:
-- **bold** and _italics._
-- lists
-- [links](https://astro.build)
-- and more!
-```
-
-Astro의 [파일 기반 라우팅](/ko/guides/routing/) 또는 [동적 경로](/ko/guides/routing/#동적-경로) 생성 옵션에 대해 자세히 알아보세요.
-
-## Markdown 기능
-
-Astro는 Markdown 및 MDX 파일을 사용할 때 사용할 수 있는 몇 가지 추가 내장 Markdown 기능을 제공합니다.
-
-### 프런트매터 `layout`
-
-Astro는 Astro [레이아웃 컴포넌트](/ko/basics/layouts/#markdown-레이아웃)에 대한 상대 경로 (또는 [별칭](/ko/guides/imports/#별칭))를 지정할 수 있는 특별한 프런트매터 `layout` 속성이 있는 [Markdown 및 MDX 페이지](/ko/basics/astro-pages/#markdownmdx-페이지) (`src/pages/`에 위치하는)를 제공합니다.
-
-```markdown {3}
----
-# src/pages/posts/post-1.md
-layout: ../../layouts/BlogPostLayout.astro
-title: Astro in brief
-author: Himanshu
-description: Find out what makes Astro awesome!
----
-This is a post written in Markdown.
-```
-
-그런 다음 `Astro.props`를 통해 [레이아웃 컴포넌트에 특정 속성을 사용할 수 있습니다](/ko/basics/layouts/#markdown-레이아웃-props). 예를 들어 `Astro.props.frontmatter`를 통해 frontmatter 속성에 액세스할 수 있습니다.
-
-```astro /frontmatter(?:.\w+)?/
----
-// src/layouts/BlogPostLayout.astro
-const {frontmatter} = Astro.props;
----
-
-
-
{frontmatter.title}
-
Post author: {frontmatter.author}
-
{frontmatter.description}
-
-
-
-```
-
-레이아웃 컴포넌트에서 [Markdown 스타일을 지정](/ko/guides/styling/#markdown-스타일링)할 수도 있습니다.
-
-[Markdown 레이아웃](/ko/basics/layouts/#markdown-레이아웃)에 대해 자세히 알아보세요.
-
-### 제목 ID
-
-Markdown 및 MDX의 제목을 사용하면 자동으로 앵커 링크가 제공되므로 페이지의 특정 섹션에 직접 연결할 수 있습니다.
-
-```markdown title="src/pages/page-1.md"
----
-title: My page of content
----
-## Introduction
-
-I can link internally to [my conclusion](#conclusion) on the same page when writing Markdown.
-
-## Conclusion
-
-I can use the URL `https://example.com/page-1/#introduction` to navigate directly to my Introduction on the page.
-```
-
-Astro는 `github-slugger`를 기반으로 `id`라는 제목을 생성합니다. [github-slugger 문서](https://github.com/Flet/github-slugger#usage)에서 더 많은 예시를 찾을 수 있습니다.
-
-### 특수 문자 이스케이프
-
-특정 문자는 Markdown 및 MDX에서 특별한 의미를 갖습니다. 표시하려면 다른 구문을 사용해야 할 수도 있습니다. 이렇게 하려면 해당 문자에 대해 [HTML 엔터티](https://developer.mozilla.org/en-US/docs/Glossary/Entity)를 대신 사용할 수 있습니다.
-
-예를 들어 `<`가 HTML 요소의 시작 부분으로 해석되는 것을 방지하려면 `<`를 작성하세요. 또는 `{`가 MDX에서 JavaScript 표현식의 시작 부분으로 해석되는 것을 방지하려면 `{`를 작성하세요.
-
-## MDX 전용 기능
-
-Astro [MDX 통합](/ko/guides/integrations-guide/mdx/)을 추가하면 JSX 변수, 표현식, 컴포넌트를 사용하여 Markdown 작성이 향상됩니다.
-
-또한 [MDX의 Markdown 스타일 프런트매터](https://mdxjs.com/guides/frontmatter/)에 대한 지원을 포함하여 표준 MDX에 추가 기능을 추가합니다. 이를 통해 [프런트매터 `layout`](#프런트매터-layout) 속성과 같은 Astro의 내장 Markdown 기능 대부분을 사용할 수 있습니다.
-
-`.mdx` 파일은 Astro의 HTML과 같은 구문이 아닌 [MDX 구문](https://mdxjs.com/docs/what-is-mdx/#mdx-syntax)으로 작성되어야 합니다.
-
-### MDX에서 내보낸 변수 사용
-
-MDX는 `export` 구문을 사용하여 MDX 콘텐츠에 변수를 추가할 수 있도록 지원합니다. 이러한 변수는 템플릿 자체에서 액세스할 수 있을 뿐만 아니라 [파일을 다른 곳으로 가져올 때](#markdown-가져오기) 명명된 속성으로 액세스할 수 있습니다.
-
-예를 들어 MDX 페이지 또는 컴포넌트에서 `title` 필드를 내보내 `{JSX 표현식}`의 제목으로 사용할 수 있습니다.
-
-```mdx title="/src/pages/posts/post-1.mdx"
-export const title = 'My first MDX post'
-
-# {title}
-```
-
-### MDX에서 프런트매터 변수 사용
-
-Astro MDX 통합에는 기본적으로 MDX에서 프런트매터 사용에 대한 지원이 포함되어 있습니다. Markdown 파일에서와 마찬가지로 프런트매터 속성을 추가하면 이러한 변수에 액세스하여 템플릿, [`layout` 컴포넌트](#프런트매터-layout), [파일을 다른 곳으로 가져올 때](#markdown-가져오기) 명명된 속성으로 사용할 수 있습니다.
-
-```mdx title="/src/pages/posts/post-1.mdx"
----
-layout: '../../layouts/BlogPostLayout.astro'
-title: 'My first MDX post'
----
-
-# {frontmatter.title}
-```
-
-### MDX에서 컴포넌트 사용
-
-MDX 통합을 설치한 후 다른 Astro 컴포넌트에서 사용하는 것처럼 [Astro 컴포넌트](/ko/basics/astro-components/#컴포넌트-props)와 [UI 프레임워크 컴포넌트](/ko/guides/framework-components/#프레임워크-컴포넌트-사용)를 MDX (`.mdx`) 파일로 가져와 사용할 수 있습니다.
-
-필요한 경우 UI 프레임워크 컴포넌트에 `client:directive`를 포함하는 것을 잊지 마세요!
-
-[MDX 문서](https://mdxjs.com/docs/what-is-mdx/#esm)에서 가져오기 및 내보내기 구문 사용에 대한 추가 예시를 참조하세요.
-
-```mdx title="src/pages/about.mdx" {5-6} /<.+\/>/
----
-layout: ../layouts/BaseLayout.astro
-title: About me
----
-import Button from '../components/Button.astro';
-import ReactCounter from '../components/ReactCounter.jsx';
-
-I live on **Mars** but feel free to .
-
-Here is my counter component, working in MDX:
-
-
-```
-
-#### HTML 요소에 맞춤 컴포넌트 할당
-
-MDX를 사용하면 Markdown 구문을 표준 HTML 요소 대신 사용자 정의 컴포넌트에 매핑할 수 있습니다. 이를 통해 표준 Markdown 구문으로 작성할 수 있지만 선택한 요소에 특수 컴포넌트 스타일을 적용할 수 있습니다.
-
-사용자 정의 컴포넌트를 `.mdx` 파일로 가져온 다음 표준 HTML 요소를 사용자 정의 컴포넌트에 매핑하는 `components` 객체를 내보냅니다.
-
-```mdx title="src/pages/about.mdx"
-import Blockquote from '../components/Blockquote.astro';
-export const components = {blockquote: Blockquote}
-
-> This quote will be a custom Blockquote
-```
-
-```astro title="src/components/Blockquote.astro"
----
-const props = Astro.props;
----
-
- “
-
-
-```
-
-사용자 정의 컴포넌트로 덮어쓸 수 있는 HTML 요소의 전체 목록을 보려면 [MDX 웹사이트](https://mdxjs.com/table-of-components/)를 방문하세요.
-
-## Markdown 가져오기
-
-Markdown 및 MDX 파일을 Astro 파일로 직접 가져올 수 있습니다. 이를 통해 Markdown 콘텐츠뿐만 아니라 Astro의 JSX 유사 표현식에서 사용할 수 있는 프런트매터 값과 같은 기타 속성에 액세스할 수 있습니다.
-
-`import` 문을 사용하여 하나의 특정 페이지를 가져오거나 [`Astro.glob()`](/ko/guides/imports/#astroglob)을 사용하여 여러 페이지를 가져올 수 있습니다.
-
-```astro title="src/pages/index.astro"
----
-// 단일 파일 가져오기
-import * as myPost from '../pages/post/my-post.md';
-
-// Astro.glob을 사용하여 여러 파일 가져오기
-const posts = await Astro.glob('../pages/post/*.md');
----
-```
-
-Astro 컴포넌트에서 Markdown 및 MDX 파일을 가져오면 해당 [내보낸 속성](#내보낸-속성)이 포함된 객체를 얻게 됩니다.
-
-```md title="/src/pages/posts/great-post.md"
+```md title="src/posts/great-post.md"
---
title: 'The greatest post of all time'
author: 'Ben'
@@ -233,9 +40,8 @@ Here is my _great_ post!
```astro title="src/pages/my-posts.astro"
---
-import * as greatPost from '../pages/post/great-post.md';
-
-const posts = await Astro.glob('../pages/post/*.md');
+import * as greatPost from '../posts/great-post.md';
+const posts = Object.values(await import.meta.glob('../posts/*.md', { eager: true }));
---
{greatPost.frontmatter.title}
@@ -247,142 +53,115 @@ const posts = await Astro.glob('../pages/post/*.md');
```
-MDX 파일에서는 frontmatter 및 `export` 문 모두에서 속성에 액세스할 수 있습니다.
+### 사용 가능한 속성
-```mdx title="/src/pages/posts/mdx-post.mdx"
----
-title: 'The greatest post of all time'
-author: 'Ben'
----
-export const description = 'Get comfortable! This is going to be a great read.'
+#### 컬렉션 쿼리하기
-Here is my _great_ post!
-```
+도우미 함수를 통해 컬렉션에서 데이터를 가져올 때 Markdown의 frontmatter 속성은 `data` 객체 (예: `post.data.title`)에서 사용할 수 있습니다. 또한 `body`에는 컴파일되지 않은 원시 본문 콘텐츠가 문자열로 포함됩니다.
-```astro title="src/pages/my-posts.astro"
----
-import * as greatPost from '../pages/post/mdx-post.mdx';
----
+[CollectionEntry 타입](/ko/reference/api-reference/#컬렉션-항목-타입)에 대해 알아보세요.
-
{greatPost.frontmatter.title}
-
Written by: {greatPost.frontmatter.author}
-
{greatPost.description}
-```
+#### Markdown 가져오기
-TypeScript 제네릭을 사용하여 `frontmatter` 변수에 대한 타입을 선택적으로 제공할 수 있습니다.
+`import` 또는 `import.meta.glob()`을 사용하여 Markdown을 가져올 때 내보낸 다음 속성은 `.astro` 컴포넌트에서 사용할 수 있습니다:
-```astro title="src/pages/index.astro" ins={2-5} ins=""
----
-interface Frontmatter {
- title: string;
- description?: string;
+- **`file`** - 절대 파일 경로 (예: `/home/user/projects/.../file.md`).
+- **`url`** - 페이지의 URL (예: `/en/guides/markdown-content`).
+- **`frontmatter`** - 파일의 YAML 프런트매터에 지정된 모든 데이터를 포함합니다.
+- **``** - 파일의 전체 렌더링된 콘텐츠를 반환하는 컴포넌트입니다.
+- **`rawContent()`** - 원시 Markdown 문서를 문자열로 반환하는 함수입니다.
+- **`compiledContent()`** - HTML 문자열로 컴파일된 Markdown 문서를 반환하는 함수입니다.
+- **`getHeadings()`** - `{ depth: number; slug: string; text: string }[]` 타입을 가지는 파일의 모든 제목 (예: `
`부터 `
`)의 배열을 반환하는 비동기 함수입니다. 각 제목의 `slug`는 특정 제목에 대해 생성된 ID에 해당하며, 앵커 링크에 사용될 수 있습니다.
+
+Markdown 블로그 게시물 예시에서는 다음 `Astro.props` 객체를 전달할 수 있습니다:
+
+```js
+Astro.props = {
+ file: "/home/user/projects/.../file.md",
+ url: "/en/guides/markdown-content/",
+ frontmatter: {
+ /** 블로그 게시물의 프런트매터 */
+ title: "Astro 0.18 Release",
+ date: "Tuesday, July 27 2021",
+ author: "Matthew Phillips",
+ description: "Astro 0.18 is our biggest release since Astro launch.",
+ },
+ getHeadings: () => [
+ {"depth": 1, "text": "Astro 0.18 Release", "slug": "astro-018-release"},
+ {"depth": 2, "text": "Responsive partial hydration", "slug": "responsive-partial-hydration"}
+ /* ... */
+ ],
+ rawContent: () => "# Astro 0.18 Release\nA little over a month ago, the first public beta [...]",
+ compiledContent: () => "
Astro 0.18 Release
\n
A little over a month ago, the first public beta [...]
```
-### 내보낸 속성
-
-:::note[Astro 레이아웃을 사용하시나요?]
-Astro의 특수한 [프런트매터 layout](#프런트매터-layout)을 사용할 때 [Astro 레이아웃 컴포넌트로 내보낸 속성](/ko/basics/layouts/#markdown-레이아웃-props)을 확인하세요.
-:::
-
-`import` 문이나 `Astro.glob()`을 사용할 때 `.astro` 컴포넌트에 다음 속성을 사용할 수 있습니다.
-
-- **`file`** - 절대 파일 경로 (예: `/home/user/projects/.../file.md`).
-- **`url`** - 페이지인 경우 페이지의 URL (예: `/en/guides/markdown-content`).
-- **`frontmatter`** - 파일의 YAML 프런트매터에 지정된 모든 데이터를 포함합니다.
-- **`getHeadings`** - 파일의 모든 제목 (예: `h1 -> h6` 요소)의 배열을 반환하는 비동기 함수입니다. 각 제목의 `slug`는 특정 제목에 대해 생성된 ID에 해당하며, 앵커 링크에 사용될 수 있습니다. 이 목록은 다음 타입을 따릅니다: `{ depth: number; slug: string; text: string }[]`.
-- **`Content`** - 파일의 전체 렌더링된 콘텐츠를 반환하는 컴포넌트입니다.
-- **(Markdown만 해당) `rawContent()`** - 원시 Markdown 문서를 문자열로 반환하는 함수입니다.
-- **(Markdown만 해당) `compiledContent()`** - HTML 문자열로 컴파일된 Markdown 문서를 반환하는 함수입니다. 여기에는 프런트매터에 구성된 레이아웃이 포함되지 않습니다! Markdown 문서 자체만 HTML로 반환됩니다.
-- **(MDX에만 해당)** - MDX 파일은 `export` 문을 사용하여 데이터를 내보낼 수도 있습니다.
+## `` 컴포넌트
-### `Content` 컴포넌트
+`` 컴포넌트는 Markdown 파일에서 `Content`를 가져와서 사용할 수 있습니다. 이 컴포넌트는 파일의 전체 본문 콘텐츠를 HTML로 렌더링하여 반환합니다. 선택적으로 `Content`의 이름을 원하는 컴포넌트 이름으로 변경할 수 있습니다.
-Markdown 또는 MDX 파일의 전체 렌더링된 콘텐츠를 반환하는 컴포넌트를 렌더링하려면 `Content`를 가져옵니다.
+이와 유사하게 `` 컴포넌트를 렌더링하여 [Markdown 컬렉션 항목의 HTML 콘텐츠를 렌더링](/ko/guides/content-collections/#콘텐츠를-html로-렌더링)을 할 수 있습니다.
```astro title="src/pages/content.astro" "Content"
---
+// 가져오기 문
import {Content as PromoBanner} from '../components/promoBanner.md';
----
+// 컬렉션 쿼리
+import { getEntry, render } from 'astro:content';
+const product = await getEntry('products', 'shirt');
+const { Content } = await render();
+---
Today's promo
-```
-#### 예: 동적 페이지 라우팅
+
Sale Ends: {product.data.saleEndDate.toDateString()}
+
+```
-페이지 경로를 생성하기 위해 Markdown/MDX 파일을 `src/pages/` 디렉터리에 두는 대신 [페이지를 동적으로 생성](/ko/guides/routing/#동적-경로)할 수 있습니다.
+## 제목 ID
-Markdown 콘텐츠에 액세스하려면 Astro 페이지의 `props`를 통해 `` 컴포넌트를 전달하세요. 그런 다음 `Astro.props`에서 컴포넌트를 검색하여 페이지 템플릿에 렌더링할 수 있습니다.
+Markdown으로 제목을 작성하면 자동으로 앵커 링크가 제공되므로 페이지의 특정 섹션으로 바로 연결할 수 있습니다.
-```astro title="src/pages/[slug].astro" {9-11} "Content" "Astro.props.post"
+```markdown title="src/pages/page-1.md"
---
-export async function getStaticPaths() {
- const posts = await Astro.glob('../posts/**/*.md')
-
- return posts.map(post => ({
- params: {
- slug: post.frontmatter.slug
- },
- props: {
- post
- },
- }))
-}
-
-const { Content } = Astro.props.post
+title: My page of content
---
-
-
-
-```
-
-### MDX 전용 내보내기
+## Introduction
-MDX 파일은 `export` 문을 사용하여 데이터를 내보낼 수도 있습니다.
+I can link internally to [my conclusion](#conclusion) on the same page when writing Markdown.
-예를 들어 MDX 페이지 또는 컴포넌트에서 `title` 필드를 내보낼 수 있습니다.
+## Conclusion
-```mdx title="/src/pages/posts/post-1.mdx"
-export const title = 'My first MDX post'
+I can visit `https://example.com/page-1/#introduction` in a browser to navigate directly to my Introduction.
```
-이 `title`은 `import` 및 [Astro.glob()](/ko/reference/api-reference/#astroglob) 문에서 액세스할 수 있습니다.
+Astro는 `github-slugger`를 기반으로 제목의 `id`를 생성합니다. 더 많은 예시는 [github-slugger 문서](https://github.com/Flet/github-slugger#usage)에서 찾을 수 있습니다.
-```astro
----
-// src/pages/index.astro
-const posts = await Astro.glob('./*.mdx');
----
+### 제목 ID와 플러그인
-{posts.map(post =>
{post.title}
)}
-```
+Astro는 Markdown 및 MDX 파일의 모든 제목 요소 (`
` ~ `
`)에 `id` 속성을 삽입하고 [Markdown 내보낸 속성](#사용-가능한-속성)에서 이러한 ID를 검색하기 위한 `getHeadings()` 유틸리티를 제공합니다.
-### 가져온 MDX가 있는 사용자 정의 컴포넌트
+`id` 속성 (예: `rehype-slug`)을 삽입하는 rehype 플러그인을 추가하여 이러한 제목 ID를 맞춤설정할 수 있습니다. Astro의 기본값 대신 사용자 정의 ID가 HTML 출력과 `getHeadings()`에 의해 반환된 항목에 반영됩니다.
-가져온 MDX 콘텐츠를 렌더링할 때 [사용자 정의 컴포넌트](#html-요소에-맞춤-컴포넌트-할당)는 `components` prop을 통해 전달될 수 있습니다.
+기본적으로 Astro는 rehype 플러그인이 실행된 후 `id` 속성을 주입합니다. 사용자 정의 rehype 플러그인 중 하나가 Astro에서 삽입한 ID에 액세스해야 하는 경우 Astro의 `rehypeHeadingIds` 플러그인을 직접 가져와 사용할 수 있습니다. 이를 사용하는 플러그인 앞에 `rehypeHeadingIds`를 추가하세요.
-```astro title="src/pages/page.astro" "components={{...components, h1: Heading }}"
----
-import { Content, components } from '../content.mdx';
-import Heading from '../Heading.astro';
----
-
-
-```
+```js title="astro.config.mjs" ins={2, 8}
+import { defineConfig } from 'astro/config';
+import { rehypeHeadingIds } from '@astrojs/markdown-remark';
+import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source';
-:::note
-MDX 파일에 정의되고 내보낸 사용자 정의 컴포넌트를 가져온 다음 `components` 속성을 통해 `` 컴포넌트에 다시 전달해야 합니다.
-:::
+export default defineConfig({
+ markdown: {
+ rehypePlugins: [
+ rehypeHeadingIds,
+ otherPluginThatReliesOnHeadingIDs,
+ ],
+ },
+});
+```
-## Markdown 및 MDX 구성
+## Markdown 플러그인
Astro의 Markdown 지원은 활성 생태계를 갖춘 강력한 구문 분석 및 처리 도구인 [remark](https://remark.js.org/)를 통해 제공됩니다. Pandoc 및 markdown-it과 같은 다른 Markdown 파서는 현재 지원되지 않습니다.
@@ -390,13 +169,13 @@ Astro는 기본적으로 [GitHub-flavored Markdown](https://github.com/remarkjs/
`astro.config.mjs` 파일에서 remark가 Markdown을 구문 분석하는 방법을 사용자 정의할 수 있습니다. [Markdown 구성 옵션](/ko/reference/configuration-reference/#markdown-옵션)의 전체 목록을 확인하세요.
-### Markdown 플러그인
+### remark 및 rehype 플러그인 추가하기
-Astro는 Markdown 및 MDX에 대한 타사 [remark](https://github.com/remarkjs/remark) 및 [rehype](https://github.com/rehypejs/rehype) 플러그인 추가를 지원합니다. 이러한 플러그인을 사용하면 [목차 자동 생성](https://github.com/remarkjs/remark-toc), [접근 가능한 이모티콘 라벨 적용](https://github.com/florianeckerstorfer/remark-a11y-emoji), [Markdown 스타일 지정](/ko/guides/styling/#markdown-스타일링)과 같은 새로운 기능으로 Markdown을 확장할 수 있습니다.
+Astro는 Markdown에 대한 타사 [remark](https://github.com/remarkjs/remark) 및 [rehype](https://github.com/rehypejs/rehype) 플러그인 추가를 지원합니다. 이러한 플러그인을 사용하면 [목차 자동 생성](https://github.com/remarkjs/remark-toc), [접근 가능한 이모티콘 라벨 적용](https://github.com/florianeckerstorfer/remark-a11y-emoji), [Markdown 스타일 지정](/ko/guides/styling/#markdown-스타일링)과 같은 새로운 기능으로 Markdown을 확장할 수 있습니다.
[awesome-remark](https://github.com/remarkjs/awesome-remark) 및 [awesome-rehype](https://github.com/rehypejs/awesome-rehype)와 같은 인기 플러그인들을 찾아보시기 바랍니다! 구체적인 설치 지침은 각 플러그인의 자체 README를 참조하세요.
-이 예시에서는 Markdown 및 MDX 파일 모두에 [`remark-toc`](https://github.com/remarkjs/remark-toc) 및 [`rehype-accessible-emojis`](https://www.npmjs.com/package/rehype-accessible-emojis)를 적용합니다.
+이 예시에서는 Markdown 파일에 [`remark-toc`](https://github.com/remarkjs/remark-toc) 및 [`rehype-accessible-emojis`](https://www.npmjs.com/package/rehype-accessible-emojis)를 적용합니다.
```js title="astro.config.mjs"
import { defineConfig } from 'astro/config';
@@ -412,34 +191,7 @@ export default defineConfig({
});
```
-#### 제목 ID 및 플러그인
-
-Astro는 Markdown 및 MDX 파일의 모든 제목 요소 (`
` ~ `
`)에 `id` 속성을 삽입하고 [Markdown 내보낸 속성](#내보낸-속성)에서 이러한 ID를 검색하기 위한 `getHeadings()` 유틸리티를 제공합니다.
-
-`id` 속성 (예: `rehype-slug`)을 삽입하는 rehype 플러그인을 추가하여 이러한 제목 ID를 맞춤설정할 수 있습니다. Astro의 기본값 대신 사용자 정의 ID가 HTML 출력과 `getHeadings()`에 의해 반환된 항목에 반영됩니다.
-
-기본적으로 Astro는 rehype 플러그인이 실행된 후 `id` 속성을 주입합니다. 사용자 정의 rehype 플러그인 중 하나가 Astro에서 삽입한 ID에 액세스해야 하는 경우 Astro의 `rehypeHeadingIds` 플러그인을 직접 가져와 사용할 수 있습니다. 이를 사용하는 플러그인 앞에 `rehypeHeadingIds`를 추가하세요.
-
-```js title="astro.config.mjs" ins={2, 8}
-import { defineConfig } from 'astro/config';
-import { rehypeHeadingIds } from '@astrojs/markdown-remark';
-import { otherPluginThatReliesOnHeadingIDs } from 'some/plugin/source';
-
-export default defineConfig({
- markdown: {
- rehypePlugins: [
- rehypeHeadingIds,
- otherPluginThatReliesOnHeadingIDs,
- ],
- },
-});
-```
-
-:::note
-`getHeadings()`는 Markdown 또는 MDX 파일에 직접 작성된 제목만 반환합니다. MDX 파일이 자체 제목을 포함하는 컴포넌트를 가져오는 경우, `getHeadings()`에 의해 반환되지 않습니다.
-:::
-
-#### 플러그인 맞춤설정
+### 플러그인 사용자 정의
플러그인을 사용자 정의하려면 중첩 배열에서 플러그인 뒤에 옵션 객체를 제공하세요.
@@ -513,7 +265,7 @@ export default {
```
-이제 모든 Markdown 또는 MDX 파일의 프런트매터에 `customProperty`가 있으므로 [Markdown을 가져올 때](#markdown-가져오기) [레이아웃의 `Astro.props.frontmatter` 속성](#프런트매터-layout)에서 사용할 수 있습니다.
+이제 모든 Markdown 또는 MDX 파일의 프런트매터에 `customProperty`가 있으므로 [Markdown을 가져올 때](#markdown-가져오기) [레이아웃의 `Astro.props.frontmatter` 속성](#프런트매터-layout-속성)에서 사용할 수 있습니다.
@@ -567,7 +319,7 @@ export default defineConfig({
});
```
-### 구문 강조
+## 구문 강조
Astro에는 [Shiki](https://shiki.style/) 및 [Prism](https://prismjs.com/)에 대한 지원이 내장되어 있습니다. 이는 다음에 대한 구문 강조를 제공합니다.
@@ -577,7 +329,7 @@ Astro에는 [Shiki](https://shiki.style/) 및 [Prism](https://prismjs.com/)에
Shiki는 기본적으로 활성화되어 있으며 `github-dark` 테마로 사전 구성되어 있습니다. 컴파일된 출력은 외부 CSS 클래스, 스타일시트 또는 클라이언트 측 JS가 없는 인라인 `스타일`로 제한됩니다.
-#### Shiki 구성
+### Shiki 구성
Shiki는 기본 구문 강조 도구입니다. 다음과 같이 `shikiConfig` 객체를 통해 모든 옵션을 구성할 수 있습니다.
@@ -635,7 +387,7 @@ export default defineConfig({
또한 테마, 밝은 모드와 어두운 모드 전환 또는 CSS 변수를 통한 스타일 지정에 대해 자세히 알아보려면 [Shiki의 자체 테마 문서](https://shiki.style/themes)를 읽어보는 것이 좋습니다.
-#### 기본 구문 강조 모드 변경
+### 기본 구문 강조
기본적으로 `prism'`으로 전환하거나 구문 강조를 완전히 비활성화하려면 `markdown.syntaxHighlight` 구성 객체를 사용할 수 있습니다.
@@ -666,9 +418,11 @@ Prism을 사용하기로 선택한 경우 Astro는 대신 Prism의 CSS 클래스
## 원격 마크다운 가져오기
-Astro는 주로 프로젝트 디렉터리에 저장할 수 있는 로컬 Markdown 파일용으로 설계되었습니다. 그러나 원격 소스에서 Markdown을 가져와야 하는 특정 경우가 있을 수 있습니다. 예를 들어, 웹 사이트를 구축할 때 (또는 [SSR](/ko/guides/server-side-rendering/)을 사용하는 경우, 사용자가 웹 사이트에 요청할 때) 원격 API에서 Markdown을 가져오고 렌더링해야 할 수 있습니다.
+**Astro에는 [실험적 콘텐츠 컬렉션](/ko/reference/configuration-reference/#experimentalcontentlayer) 이외의 원격 Markdown에 대한 기본 지원은 포함되어 있지 않습니다!**
-**Astro에는 원격 Markdown에 대한 기본 지원이 포함되어 있지 않습니다!** 원격 Markdown을 가져와 HTML로 렌더링하려면 npm에서 자체 Markdown 파서를 설치하고 구성해야 합니다. 이는 Astro의 기본 제공 Markdown 및 사용자가 구성한 MDX 설정에서 상속되지 **않습니다**. 프로젝트에 이를 구현하기 전에 이러한 제한 사항을 이해해야 합니다.
+원격 Markdown을 직접 가져와 HTML로 렌더링하려면 NPM에서 자체 Markdown 파서를 설치 및 구성해야 합니다. 이렇게 하면 사용자가 구성한 Astro의 기본 제공 Markdown 설정이 상속되지 **않습니다**.
+
+이를 프로젝트에서 구현하기 전에 이러한 제한 사항을 이해하고, 대신 콘텐츠 컬렉션 로더를 사용하여 원격 마크다운을 가져오는 것을 고려하세요.
```astro title="src/pages/remote-example.astro"
---
@@ -682,3 +436,62 @@ const content = marked.parse(markdown);
---
```
+
+## 개별 Markdown 페이지
+
+Astro는 `.md` 및 기타 Markdown 파일 유형을 포함하여 [`/src/pages/` 디렉터리 내 지원되는 모든 파일](/ko/basics/astro-pages/#지원되는-페이지-파일)을 페이지로 취급합니다.
+
+이 디렉터리 또는 하위 디렉터리에 파일을 배치하면 파일 경로명을 사용하여 페이지 경로를 자동으로 빌드하고 HTML로 렌더링된 Markdown 콘텐츠가 표시됩니다.
+
+```markdown title="src/pages/page-1.md"
+---
+title: Hello, World
+---
+
+# Hi there!
+
+This Markdown file creates a page at `your-domain.com/page-1/`
+
+It probably isn't styled much, but Markdown does support:
+- **bold** and _italics._
+- lists
+- [links](https://astro.build)
+-
HTML elements
+- and more!
+```
+
+[콘텐츠 컬렉션](/ko/guides/content-collections/)과 [Markdown을 `.astro` 컴포넌트로 가져오기](#동적-jsx-유사-표현식)는 Markdown 렌더링에 더 많은 기능을 제공하며, 대부분의 콘텐츠를 처리하는 데 권장되는 방식입니다. 하지만 `src/pages/`에 파일을 추가하기만 하면 간단한 페이지가 자동으로 생성되는 편리함을 원할 때가 있습니다.
+
+### 프런트매터 `layout` 속성
+
+Markdown 페이지의 제한된 기능을 지원하기 위해, Astro는 Astro [Markdown 레이아웃 컴포넌트](/ko/basics/layouts/#markdown-레이아웃)에 대한 상대 경로인 특별한 프런트매터 `layout` 속성을 제공합니다. Markdown 파일이 `src/pages/`에 있는 경우 레이아웃 컴포넌트를 생성하고 이 layout 속성에 추가하여 Markdown 콘텐츠 주위에 페이지 셸을 제공하세요.
+
+```markdown title="src/pages/posts/post-1.md" {2}
+---
+layout: ../../layouts/BlogPostLayout.astro
+title: Astro in brief
+author: Himanshu
+description: Find out what makes Astro awesome!
+---
+This is a post written in Markdown.
+```
+
+이 레이아웃 컴포넌트는 Astro 템플릿의 `Astro.props`를 통해 [특정 속성을 자동으로 사용할 수 있는](/ko/basics/layouts/#markdown-레이아웃-props) 일반 Astro 컴포넌트입니다. 예를 들어, `Astro.props.frontmatter`를 통해 Markdown 파일의 프런트매터 속성에 액세스할 수 있습니다:
+
+```astro title="src/layouts/BlogPostLayout.astro" /frontmatter(?:.\w+)?/
+---
+const {frontmatter} = Astro.props;
+---
+
+
+
{frontmatter.title}
+
Post author: {frontmatter.author}
+
{frontmatter.description}
+
+
+
+```
+
+또한, 레이아웃 컴포넌트에서 [Markdown 스타일을 지정](/ko/guides/styling/#markdown-스타일링)할 수도 있습니다.
+
+[Markdown 레이아웃](/ko/basics/layouts/#markdown-레이아웃)에 대해 더 자세히 알아보세요.
\ No newline at end of file