Skip to content

Commit

Permalink
i18n(ko-KR): create guides/route-data.mdx and `reference/route-data…
Browse files Browse the repository at this point in the history
….mdx` (#2896)

Co-authored-by: trueberryless <[email protected]>
  • Loading branch information
jsparkdev and trueberryless authored Feb 16, 2025
1 parent bb935c3 commit 239d937
Show file tree
Hide file tree
Showing 2 changed files with 333 additions and 0 deletions.
137 changes: 137 additions & 0 deletions docs/src/content/docs/ko/guides/route-data.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
title: 경둜 데이터
description: Starlight의 νŽ˜μ΄μ§€ 데이터 λͺ¨λΈμ΄ νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•˜λŠ” 데 μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ”μ§€, 그리고 이λ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©μž μ •μ˜ν•  수 μžˆλŠ”μ§€ μ•Œμ•„λ³΄μ„Έμš”.
---

import { Steps } from '@astrojs/starlight/components';

Starlightκ°€ λ¬Έμ„œμ—μ„œ νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•  λ•Œ, λ¨Όμ € ν•΄λ‹Ή νŽ˜μ΄μ§€μ˜ λ‚΄μš©μ„ λ‚˜νƒ€λ‚΄λŠ” 경둜 데이터 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
이 κ°€μ΄λ“œμ—μ„œλŠ” 경둜 데이터가 μ–΄λ–»κ²Œ μƒμ„±λ˜λŠ”μ§€, μ–΄λ–»κ²Œ μ‚¬μš©ν•˜λŠ”μ§€, 그리고 Starlight의 κΈ°λ³Έ λ™μž‘μ„ μˆ˜μ •ν•˜κΈ° μœ„ν•΄ μ–΄λ–»κ²Œ μ‚¬μš©μž μ •μ˜ν•  수 μžˆλŠ”μ§€ μ„€λͺ…ν•©λ‹ˆλ‹€.

μ‚¬μš© κ°€λŠ₯ν•œ μ†μ„±μ˜ 전체 λͺ©λ‘μ€ ["경둜 데이터 μ°Έμ‘°"](/ko/reference/route-data/)λ₯Ό ν™•μΈν•˜μ„Έμš”.

## 경둜 λ°μ΄ν„°λž€ λ¬΄μ—‡μΈκ°€μš”?

Starlight 경둜 λ°μ΄ν„°λŠ” 단일 νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•˜λŠ” 데 ν•„μš”ν•œ λͺ¨λ“  정보λ₯Ό λ‹΄κ³  μžˆλŠ” κ°μ²΄μž…λ‹ˆλ‹€.
μ—¬κΈ°μ—λŠ” ν˜„μž¬ νŽ˜μ΄μ§€μ— λŒ€ν•œ μ •λ³΄λΏλ§Œ μ•„λ‹ˆλΌ Starlight κ΅¬μ„±μ—μ„œ μƒμ„±λœ 데이터도 ν¬ν•¨λ©λ‹ˆλ‹€.

## 경둜 데이터 μ‚¬μš©ν•˜κΈ°

Starlight의 λͺ¨λ“  μ»΄ν¬λ„ŒνŠΈλŠ” 경둜 데이터λ₯Ό μ‚¬μš©ν•˜μ—¬ 각 νŽ˜μ΄μ§€μ— 무엇을 λ Œλ”λ§ν• μ§€ κ²°μ •ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, [`siteTitle`](/ko/reference/route-data/#sitetitle) λ¬Έμžμ—΄μ€ μ‚¬μ΄νŠΈ 제λͺ©μ„ ν‘œμ‹œν•˜λŠ” 데 μ‚¬μš©λ˜κ³ , [`sidebar`](/ko/reference/route-data/#sidebar) 배열은 μ „μ—­ μ‚¬μ΄λ“œλ°” 탐색을 λ Œλ”λ§ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

Astro μ»΄ν¬λ„ŒνŠΈμ—μ„œ `Astro.locals.starlightRoute` μ „μ—­ λ³€μˆ˜λ₯Ό 톡해 이 데이터에 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

```astro title="example.astro" {2}
---
const { siteTitle } = Astro.locals.starlightRoute;
---
<p>The title of this site is β€œ{siteTitle}”</p>
```

예λ₯Ό λ“€μ–΄, [μ»΄ν¬λ„ŒνŠΈ μž¬μ •μ˜](/ko/guides/overriding-components/)λ₯Ό κ΅¬μΆ•ν•˜μ—¬ ν‘œμ‹œλ˜λŠ” λ‚΄μš©μ„ μ‚¬μš©μž μ •μ˜ν•  λ•Œ μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

## 경둜 데이터 μ‚¬μš©μž μ •μ˜

Starlight의 경둜 λ°μ΄ν„°λŠ” λ³„λ„μ˜ ꡬ성 없이 λ°”λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.
ν•˜μ§€λ§Œ κ³ κΈ‰ μ‚¬μš© μ‚¬λ‘€μ˜ 경우, 일뢀 λ˜λŠ” λͺ¨λ“  νŽ˜μ΄μ§€μ— λŒ€ν•œ 경둜 데이터λ₯Ό μ‚¬μš©μž μ •μ˜ν•˜μ—¬ μ‚¬μ΄νŠΈ ν‘œμ‹œ 방식을 λ³€κ²½ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŠ” [μ»΄ν¬λ„ŒνŠΈ μž¬μ •μ˜](/ko/guides/overriding-components/)와 μœ μ‚¬ν•œ κ°œλ…μ΄μ§€λ§Œ, Starlightκ°€ 데이터λ₯Ό λ Œλ”λ§ν•˜λŠ” 방식을 μˆ˜μ •ν•˜λŠ” λŒ€μ‹  Starlightκ°€ λ Œλ”λ§ν•˜λŠ” 데이터λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€.

### 경둜 데이터 μ‚¬μš©μž μ •μ˜κ°€ ν•„μš”ν•œ 경우

경둜 데이터 μ‚¬μš©μž μ •μ˜λŠ” Starlightκ°€ 데이터λ₯Ό μ²˜λ¦¬ν•˜λŠ” 방식을 κΈ°μ‘΄ ꡬ성 μ˜΅μ…˜μœΌλ‘œλŠ” λΆˆκ°€λŠ₯ν•œ λ°©μ‹μœΌλ‘œ μˆ˜μ •ν•˜κ³  싢을 λ•Œ μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, νŠΉμ • νŽ˜μ΄μ§€μ˜ μ‚¬μ΄λ“œλ°” ν•­λͺ©μ„ ν•„ν„°λ§ν•˜κ±°λ‚˜ 제λͺ©μ„ μ‚¬μš©μž μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이와 같은 λ³€κ²½ 사항은 Starlight의 κΈ°λ³Έ μ»΄ν¬λ„ŒνŠΈλ₯Ό μˆ˜μ •ν•  ν•„μš” 없이 ν•΄λ‹Ή μ»΄ν¬λ„ŒνŠΈμ— μ „λ‹¬λ˜λŠ” λ°μ΄ν„°λ§Œ μˆ˜μ •ν•˜λ©΄ λ©λ‹ˆλ‹€.

### 경둜 데이터λ₯Ό μ‚¬μš©μž μ •μ˜ν•˜λŠ” 방법

"미듀웨어"의 νŠΉμˆ˜ν•œ ν˜•νƒœλ₯Ό μ‚¬μš©ν•˜μ—¬ 경둜 데이터λ₯Ό μ‚¬μš©μž μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ΄λŠ” Starlightκ°€ νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•  λ•Œλ§ˆλ‹€ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ‘œ, 경둜 데이터 객체의 값을 μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

<Steps>

1. Starlight의 `defineRouteMiddleware()` μœ ν‹Έλ¦¬ν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ `onRequest` ν•¨μˆ˜λ₯Ό λ‚΄λ³΄λ‚΄λŠ” μƒˆ νŒŒμΌμ„ λ§Œλ“­λ‹ˆλ‹€.

```ts
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware(() => {});
```

2. `astro.config.mjs`μ—μ„œ 경둜 데이터 미듀웨어 파일의 μœ„μΉ˜λ₯Ό Starlight에 μ•Œλ €μ€λ‹ˆλ‹€.

```js ins={9}
// astro.config.mjs
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

export default defineConfig({
integrations: [
starlight({
title: 'λ‚˜μ˜ 즐거운 λ¬Έμ„œ μ‚¬μ΄νŠΈ',
routeMiddleware: './src/routeData.ts',
}),
],
});
```

3. `onRequest` ν•¨μˆ˜λ₯Ό μ—…λ°μ΄νŠΈν•˜μ—¬ 경둜 데이터λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€.

미듀웨어가 λ°›λŠ” 첫 번째 μΈμžλŠ” [Astro의 `context` 객체](https://docs.astro.build/ko/reference/api-reference/)μž…λ‹ˆλ‹€.
μ—¬κΈ°μ—λŠ” ν˜„μž¬ URLκ³Ό `locals`λ₯Ό ν¬ν•¨ν•˜μ—¬ ν˜„μž¬ νŽ˜μ΄μ§€ λ Œλ”λ§μ— λŒ€ν•œ λͺ¨λ“  정보가 ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

이 μ˜ˆμ œμ—μ„œλŠ” λͺ¨λ“  νŽ˜μ΄μ§€ 제λͺ©μ˜ 끝에 λŠλ‚Œν‘œλ₯Ό μΆ”κ°€ν•˜μ—¬ λ¬Έμ„œλ₯Ό λ”μš± ν₯미둭게 λ§Œλ“€ κ²ƒμž…λ‹ˆλ‹€.

```ts
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware((context) => {
// 이 νŽ˜μ΄μ§€μ˜ μ½˜ν…μΈ  μ»¬λ ‰μ…˜ ν•­λͺ©μ„ κ°€μ Έμ˜΅λ‹ˆλ‹€.
const { entry } = context.locals.starlightRoute;
// 제λͺ©μ— λŠλ‚Œν‘œλ₯Ό μΆ”κ°€ν•˜μ—¬ μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€.
entry.data.title = entry.data.title + '!';
});
```

</Steps>

#### μ—¬λŸ¬ 경둜 미듀웨어

StarlightλŠ” μ—¬λŸ¬ 개의 미듀웨어 μ œκ³΅λ„ μ§€μ›ν•©λ‹ˆλ‹€.
λ‘˜ μ΄μƒμ˜ 미듀웨어 ν•Έλ“€λŸ¬λ₯Ό μΆ”κ°€ν•˜λ €λ©΄ `routeMiddleware`λ₯Ό 경둜 λ°°μ—΄λ‘œ μ„€μ •ν•˜μ„Έμš”.

```js {9}
// astro.config.mjs
import { defineConfig } from 'astro/config';
import starlight from '@astrojs/starlight';

export default defineConfig({
integrations: [
starlight({
title: 'μ—¬λŸ¬ 미듀웨어가 μžˆλŠ” λ‚΄ μ‚¬μ΄νŠΈ',
routeMiddleware: ['./src/middleware-one.ts', './src/middleware-two.ts'],
}),
],
});
```

#### μΆ”κ°€λœ 경둜 미듀웨어 λŒ€κΈ°

μ½”λ“œ μ‹€ν–‰ 전에 μŠ€νƒμ— μΆ”κ°€λœ 미듀웨어가 싀행될 λ•ŒκΉŒμ§€ 기닀리렀면 미듀웨어 ν•¨μˆ˜μ— 두 번째 인자둜 μ „λ‹¬λ˜λŠ” `next()` μ½œλ°±μ„ awaitν•  수 μžˆμŠ΅λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄, λ³€κ²½ν•˜κΈ° 전에 ν”ŒλŸ¬κ·ΈμΈμ˜ 미듀웨어가 싀행될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦¬λŠ” 데 μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

```ts "next" "await next();"
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware(async (context, next) => {
// μΆ”κ°€λœ 미듀웨어가 싀행될 λ•ŒκΉŒμ§€ κΈ°λ‹€λ¦½λ‹ˆλ‹€.
await next();
// 경둜 데이터λ₯Ό μˆ˜μ •ν•©λ‹ˆλ‹€.
const { entry } = context.locals.starlightRoute;
entry.data.title = entry.data.title + '!';
});
```
196 changes: 196 additions & 0 deletions docs/src/content/docs/ko/reference/route-data.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
---
title: 경둜 데이터 μ°Έμ‘°
description: Starlight의 경둜 데이터 객체에 λŒ€ν•œ 전체 μ°Έμ‘° λ¬Έμ„œμž…λ‹ˆλ‹€.
---

Starlight의 경둜 데이터 κ°μ²΄λŠ” ν˜„μž¬ νŽ˜μ΄μ§€μ— λŒ€ν•œ 정보λ₯Ό λ‹΄κ³  μžˆμŠ΅λ‹ˆλ‹€.
Starlight의 데이터 λͺ¨λΈ μž‘λ™ 방식에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ ["경둜 데이터" κ°€μ΄λ“œ](/ko/guides/route-data/)μ—μ„œ ν™•μΈν•˜μ„Έμš”.

Astro μ»΄ν¬λ„ŒνŠΈμ—μ„œλŠ” `Astro.locals.starlightRoute`λ₯Ό 톡해 경둜 데이터에 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

```astro {4}
---
// src/components/Custom.astro
const { hasSidebar } = Astro.locals.starlightRoute;
---
```

[경둜 미듀웨어](/ko/guides/route-data/#경둜-데이터-μ‚¬μš©μž-μ •μ˜)μ—μ„œλŠ” 미듀웨어 ν•¨μˆ˜μ— μ „λ‹¬λœ μ»¨ν…μŠ€νŠΈ κ°μ²΄μ—μ„œ 경둜 데이터에 μ ‘κ·Όν•©λ‹ˆλ‹€.

```ts {5}
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware((context) => {
const { hasSidebar } = context.locals.starlightRoute;
});
```

## `starlightRoute`

`starlightRoute` κ°μ²΄λŠ” λ‹€μŒ 속성을 κ°€μ§‘λ‹ˆλ‹€.

### `dir`

**νƒ€μž…:** `'ltr' | 'rtl'`

νŽ˜μ΄μ§€ μž‘μ„± λ°©ν–₯μž…λ‹ˆλ‹€.

### `lang`

**νƒ€μž…:** `string`

이 νŽ˜μ΄μ§€μ˜ λ‘œμΌ€μΌμ— λŒ€ν•œ BCP-47 μ–Έμ–΄ νƒœκ·Έμž…λ‹ˆλ‹€. 예: `en`, `zh-CN` λ˜λŠ” `pt-BR`

### `locale`

**νƒ€μž…:** `string | undefined`

μ–Έμ–΄κ°€ μ œκ³΅λ˜λŠ” κΈ°λ³Έ κ²½λ‘œμž…λ‹ˆλ‹€. 루트 λ‘œμΌ€μΌ 슬러그의 경우 `undefined`μž…λ‹ˆλ‹€.

### `siteTitle`

**νƒ€μž…:** `string`

이 νŽ˜μ΄μ§€μ˜ λ‘œμΌ€μΌμ— λŒ€ν•œ μ‚¬μ΄νŠΈ 제λͺ©μž…λ‹ˆλ‹€.

### `siteTitleHref`

**νƒ€μž…:** `string`

`/`처럼 ν™ˆνŽ˜μ΄μ§€μ™€ μ—°κ²°λ˜λŠ” μ‚¬μ΄νŠΈ 제λͺ© `href` μ†μ„±μ˜ κ°’μž…λ‹ˆλ‹€.
λ‹€κ΅­μ–΄ μ‚¬μ΄νŠΈμ˜ 경우 `/en/` λ˜λŠ” `/zh-cn/`κ³Ό 같은 ν˜„μž¬ λ‘œμΌ€μΌμ΄ ν¬ν•¨λ©λ‹ˆλ‹€.

### `slug`

**νƒ€μž…:** `string`

μ½˜ν…μΈ  파일 μ΄λ¦„μ—μ„œ μƒμ„±λœ 이 νŽ˜μ΄μ§€μ˜ μŠ¬λŸ¬κ·Έμž…λ‹ˆλ‹€.

이 속성은 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠμœΌλ©° ν–₯ν›„ λ²„μ „μ˜ Starlightμ—μ„œ 제거될 μ˜ˆμ •μž…λ‹ˆλ‹€.
[Starlight의 `docsLoader`](/ko/manual-setup/#μ½˜ν…μΈ -μ»¬λ ‰μ…˜-ꡬ성)λ₯Ό μ‚¬μš©ν•˜μ—¬ μƒˆ μ½˜ν…μΈ  λ ˆμ΄μ–΄ API둜 λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜κ³  λŒ€μ‹  [`id`](#id) 속성을 μ‚¬μš©ν•˜μ„Έμš”.

### `id`

**νƒ€μž…:** `string`

이 νŽ˜μ΄μ§€μ˜ 슬러그 λ˜λŠ” [`legacy.collections`](https://docs.astro.build/ko/reference/legacy-flags/#collections) ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μ½˜ν…μΈ  파일λͺ…을 κΈ°μ€€μœΌλ‘œ ν•œ 이 νŽ˜μ΄μ§€μ˜ 고유 IDμž…λ‹ˆλ‹€.

### `isFallback`

**νƒ€μž…:** `true | undefined`

이 νŽ˜μ΄μ§€κ°€ ν˜„μž¬ μ–Έμ–΄λ‘œ λ²ˆμ—­λ˜μ§€ μ•Šκ³  κΈ°λ³Έ λ‘œμΌ€μΌμ˜ λŒ€μ²΄ μ½˜ν…μΈ λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 `true`μž…λ‹ˆλ‹€.
λ‹€κ΅­μ–΄ μ‚¬μ΄νŠΈμ—μ„œλ§Œ μ‚¬μš©λ©λ‹ˆλ‹€.

### `entryMeta`

**νƒ€μž…:** `{ dir: 'ltr' | 'rtl'; lang: string }`

νŽ˜μ΄μ§€ μ½˜ν…μΈ μ˜ λ‘œμΌ€μΌ λ©”νƒ€λ°μ΄ν„°μž…λ‹ˆλ‹€. νŽ˜μ΄μ§€κ°€ λŒ€μ²΄ μ½˜ν…μΈ λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 μ΅œμƒμœ„ λ‘œμΌ€μΌ κ°’κ³Ό λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

### `entry`

ν˜„μž¬ νŽ˜μ΄μ§€μ— λŒ€ν•œ Astro μ½˜ν…μΈ  μ»¬λ ‰μ…˜ ν•­λͺ©μž…λ‹ˆλ‹€.
`entry.data`λŠ” ν˜„μž¬ νŽ˜μ΄μ§€μ— λŒ€ν•œ ν”„λ‘ νŠΈλ§€ν„° 값을 ν¬ν•¨ν•©λ‹ˆλ‹€.

```ts
entry: {
data: {
title: string;
description: string | undefined;
// 기타
}
}
```

[Astro μ»¬λ ‰μ…˜ μ—”νŠΈλ¦¬ νƒ€μž…](https://docs.astro.build/ko/reference/modules/astro-content/#collectionentry) μ°Έμ‘°μ—μ„œ 이 객체의 ν˜•νƒœμ— λŒ€ν•΄ μžμ„Ένžˆ μ•Œμ•„λ³΄μ„Έμš”.

### `sidebar`

**νƒ€μž…:** `SidebarEntry[]`

νŽ˜μ΄μ§€μ— λŒ€ν•œ μ‚¬μ΄νŠΈ 탐색 μ‚¬μ΄λ“œλ°” μ—”νŠΈλ¦¬μž…λ‹ˆλ‹€.

### `hasSidebar`

**νƒ€μž…:** `boolean`

이 νŽ˜μ΄μ§€μ— μ‚¬μ΄λ“œλ°”λ₯Ό ν‘œμ‹œν• μ§€ μ—¬λΆ€μž…λ‹ˆλ‹€.

### `pagination`

**νƒ€μž…:** `{ prev?: Link; next?: Link }`

ν™œμ„±ν™”λœ 경우 μ‚¬μ΄λ“œλ°”μ˜ 이전 및 λ‹€μŒ νŽ˜μ΄μ§€λ‘œ μ΄λ™ν•˜λŠ” 링크λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.

### `toc`

**νƒ€μž…:** `{ minHeadingLevel: number; maxHeadingLevel: number; items: TocItem[] } | undefined`

ν™œμ„±ν™”λœ 경우 이 νŽ˜μ΄μ§€μ˜ λͺ©μ°¨λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€.

### `headings`

**νƒ€μž…:** `{ depth: number; slug: string; text: string }[]`

ν˜„μž¬ νŽ˜μ΄μ§€μ—μ„œ μΆ”μΆœλœ λͺ¨λ“  Markdown 제λͺ©μ˜ λ°°μ—΄μž…λ‹ˆλ‹€.
Starlight의 ꡬ성 μ˜΅μ…˜μ„ μ€€μˆ˜ν•˜λŠ” μ½˜ν…μΈ  λͺ©μ°¨ μ»΄ν¬λ„ŒνŠΈλ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” [`toc`](#toc)λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.

### `lastUpdated`

**νƒ€μž…:** `Date | undefined`

ν™œμ„±ν™”λœ 경우 이 νŽ˜μ΄μ§€κ°€ λ§ˆμ§€λ§‰μœΌλ‘œ μ—…λ°μ΄νŠΈλœ λ‚ μ§œλ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ JavaScript `Date`객체가 μ‚¬μš©λ©λ‹ˆλ‹€.

### `editUrl`

**νƒ€μž…:** `URL | undefined`

ν™œμ„±ν™”λœ 경우 이 νŽ˜μ΄μ§€λ₯Ό νŽΈμ§‘ν•  수 μžˆλŠ” μ£Όμ†Œλ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•΄ `URL` 객체가 μ‚¬μš©λ©λ‹ˆλ‹€.

## μœ ν‹Έλ¦¬ν‹°

### `defineRouteMiddleware()`

`defineRouteMiddleware()` μœ ν‹Έλ¦¬ν‹°λ₯Ό μ‚¬μš©ν•˜μ—¬ 경둜 미듀웨어 λͺ¨λ“ˆμ˜ νƒ€μž…μ„ μ§€μ •ν•˜μ„Έμš”:

```ts "defineRouteMiddleware"
// src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';

export const onRequest = defineRouteMiddleware((context) => {
// ...
});
```

### `StarlightRouteData` νƒ€μž…

Starlight의 경둜 데이터λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 경우, `StarlightRouteData` νƒ€μž…μ„ 가져와 `Astro.locals.starlightRoute`의 ν˜•νƒœμ™€ μΌμΉ˜μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ μ˜ˆμ œμ—μ„œ `usePageTitleInTOC()` ν•¨μˆ˜λŠ” 경둜 데이터λ₯Ό μ—…λ°μ΄νŠΈν•˜μ—¬ ν˜„μž¬ νŽ˜μ΄μ§€μ˜ 제λͺ©μ„ λͺ©μ°¨μ˜ 첫 번째 ν•­λͺ© λ ˆμ΄λΈ”λ‘œ μ‚¬μš©ν•˜κ³  κΈ°λ³Έ "κ°œμš”" λ ˆμ΄λΈ”μ„ λŒ€μ²΄ν•©λ‹ˆλ‹€. `StarlightRouteData` νƒ€μž…μ„ μ‚¬μš©ν•˜λ©΄ 경둜 데이터 λ³€κ²½ 사항이 μœ νš¨ν•œμ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

```ts "StarlightRouteData"
// src/route-utils.ts
import type { StarlightRouteData } from '@astrojs/starlight/route-data';

export function usePageTitleInTOC(starlightRoute: StarlightRouteData) {
const overviewLink = starlightRoute.toc?.items[0];
if (overviewLink) {
overviewLink.text = starlightRoute.entry.data.title;
}
}
```

이 ν•¨μˆ˜λŠ” 경둜 λ―Έλ“€μ›¨μ–΄μ—μ„œ ν˜ΈμΆœν•  수 μžˆμŠ΅λ‹ˆλ‹€.

```ts {3,6}
// src/route-middleware.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
import { usePageTitleInTOC } from './route-utils';

export const onRequest = defineRouteMiddleware((context) => {
usePageTitleInTOC(context.locals.starlightRoute);
});
```

0 comments on commit 239d937

Please sign in to comment.