docs(ko): re-translation of korean documents (reference/*) (#4120)

pull/4123/head
Niceplugin 2 years ago committed by GitHub
parent df27e44db6
commit 3c40e9d9a8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -180,7 +180,7 @@ function sidebarReference(): DefaultTheme.SidebarItem[] {
text: '레퍼런스', text: '레퍼런스',
items: [ items: [
{ text: '사이트 구성', link: 'site-config' }, { text: '사이트 구성', link: 'site-config' },
{ text: '머리말 구성', link: 'frontmatter-config' }, { text: '전문(front-matter) 구성', link: 'frontmatter-config' },
{ text: '런타임 API', link: 'runtime-api' }, { text: '런타임 API', link: 'runtime-api' },
{ text: 'CLI', link: 'cli' }, { text: 'CLI', link: 'cli' },
{ {
@ -188,16 +188,16 @@ function sidebarReference(): DefaultTheme.SidebarItem[] {
base: '/ko/reference/default-theme-', base: '/ko/reference/default-theme-',
items: [ items: [
{ text: '개요', link: 'config' }, { text: '개요', link: 'config' },
{ text: '네비게이션', link: 'nav' }, { text: '네비게이션 바', link: 'nav' },
{ text: '사이드바', link: 'sidebar' }, { text: '사이드바', link: 'sidebar' },
{ text: '홈 페이지', link: 'home-page' }, { text: '홈 페이지', link: 'home-page' },
{ text: '푸터', link: 'footer' }, { text: '푸터', link: 'footer' },
{ text: '레이아웃', link: 'layout' }, { text: '레이아웃', link: 'layout' },
{ text: '배지', link: 'badge' }, { text: '배지(badge)', link: 'badge' },
{ text: '팀 페이지', link: 'team-page' }, { text: '팀 페이지', link: 'team-page' },
{ text: '이전 / 다음 링크', link: 'prev-next-links' }, { text: '이전/다음 링크', link: 'prev-next-links' },
{ text: '편집 링크', link: 'edit-link' }, { text: '편집 링크', link: 'edit-link' },
{ text: '마지막 업데이트 시간', link: 'last-updated' }, { text: '마지막 업데이트 날짜', link: 'last-updated' },
{ text: '검색', link: 'search' }, { text: '검색', link: 'search' },
{ text: '카본 광고', link: 'carbon-ads' } { text: '카본 광고', link: 'carbon-ads' }
] ]

@ -255,7 +255,7 @@ export default defineConfig({
} }
``` ```
이것은 기본적으로 [`postcss-prefix-selector`](https://github.com/postcss/postcss-load-config)를 사용합니다. 다음과 같이 옵션을 전달할 수 있습니다: 이것은 기본적으로 [`postcss-prefix-selector`](https://github.com/RadValentin/postcss-prefix-selector)를 사용합니다. 다음과 같이 옵션을 전달할 수 있습니다:
```js ```js
postcssIsolateStyles({ postcssIsolateStyles({

@ -2,72 +2,72 @@
## `vitepress dev` ## `vitepress dev`
지정된 디렉토리를 루트로 사용하여 VitePress 개발 서버 시작. 기본값은 현재 디렉토리입니다. 현재 디렉토리에서 실행할 때는 `dev` 명령을 생략할 수도 있습니다. 지정된 디렉터리를 루트로 하여 VitePress 개발 서버를 시작합니다. 기본값은 현재 디렉터리입니다. 현재 디렉터리에서 실행할 때 `dev` 명령은 생략할 수 있습니다.
### 사용법 ### 사용법 {#usage}
```sh ```sh
# 현재 디렉토리에서 시작, `dev` 생략 # 현재 디렉토리에서 시작, `dev` 생략
vitepress vitepress
# 서브 디렉토리에서 시작 # 하위 디렉터리에서 시작
vitepress dev [root] vitepress dev [root]
``` ```
### 옵션 ### 옵션 {#options}
| 옵션 | 설명 | | 옵션 | 설명 |
|-----------------|-----------------------------------------| | ---------------- | ----------------------------------------------------------------- |
| `--open [path]` | 시작 시 브라우저 열기 (`boolean \| string`) | | `--open [path]` | 시작 시 브라우저 열기 (`boolean \| string`) |
| `--port <port>` | 포트 지정 (`number`) | | `--port <port>` | 포트 지정 (`number`) |
| `--base <path>` | 공개 기본 경로 (기본값: `/`) (`string`) | | `--base <path>` | Public 기본 경로 (기본값: `/`) (`string`) |
| `--cors` | CORS 활성화 | | `--cors` | CORS 활성화 |
| `--strictPort` | 지정된 포트가 이미 사용 중인 경우 종료 (`boolean`) | | `--strictPort` | 지정된 포트가 이미 사용 중인 경우 종료 (`boolean`) |
| `--force` | 최적화기가 캐시를 무시하고 다시 번들링하도록 강제 (`boolean`) | | `--force` | 옵티마이저가 캐시를 무시하고 다시 번들링하도록 강제 (`boolean`) |
## `vitepress build` ## `vitepress build`
VitePress 사이트를 프로덕션 용으로 빌드합니다. VitePress 사이트를 프로덕션 빌드합니다.
### 사용법 ### 사용법 {#usage-1}
```sh ```sh
vitepress build [root] vitepress build [root]
``` ```
### 옵션 ### 옵션 {#options-1}
| 옵션 | 설명 | | 옵션 | 설명 |
|--------------------------------|--------------------------------------------------------------------------------------| | ----------------------------- |---------------------------------------------------------------------------------------------|
| `--mpa` (실험적) | 클라이언트 측 수화 없이 [MPA 모드](../guide/mpa-mode)에서 빌드 (`boolean`) | | `--mpa` (실험적) | 클라이언트 측 하이드레이션 없이 [MPA 모드](../guide/mpa-mode)로 빌드 (`boolean`) |
| `--base <path>` | 공개 기본 경로 (기본값: `/`) (`string`) | | `--base <path>` | Public 기본 경로 (기본값: `/`) (`string`) |
| `--target <target>` | 트랜스파일 대상 (기본값: `"modules"`) (`string`) | | `--target <target>` | 트랜스파일 대상 (기본값: `"modules"`) (`string`) |
| `--outDir <dir>` | **cwd**에 상대적인 출력 디렉토리 (기본값: `<root>/.vitepress/dist`) (`string`) | | `--outDir <dir>` | **cwd** 기준 출력 디렉터리 (기본값: `<root>/.vitepress/dist`) (`string`) |
| `--minify [minifier]` | 미니화 활성화/비활성화하거나 사용할 미니화기를 지정 (기본값: `"esbuild"`) (`boolean \| "terser" \| "esbuild"`) | | `--minify [minifier]` | minify 활성화/비활성화 또는 사용할 minify 도구 지정 (기본값: `"esbuild"`) (`boolean \| "terser" \| "esbuild"`) |
| `--assetsInlineLimit <number>` | 바이트 단위로 정적 자산 base64 인라인 임계값 (기본값: `4096`) (`number`) | | `--assetsInlineLimit <number>`| 바이트 단위의 정적 에셋 base64 인라인 임계값 (기본값: `4096`) (`number`) |
## `vitepress preview` ## `vitepress preview`
프로덕션 빌드를 로컬에서 미리 볼 수 있습니다. 프로덕션 빌드를 로컬에서 미리 보기 합니다.
### 사용법 ### 사용법 {#usage-2}
```sh ```sh
vitepress preview [root] vitepress preview [root]
``` ```
### 옵션 ### 옵션 {#options-2}
| 옵션 | 설명 | | 옵션 | 설명 |
|-----------------|--------------------------------| | ---------------- | ----------------------------------------- |
| `--base <path>` | 공개 기본 경로 (기본값: `/`) (`string`) | | `--base <path>` | Public 기본 경로 (기본값: `/`) (`string`) |
| `--port <port>` | 포트 지정 (`number`) | | `--port <port>` | 포트 지정 (`number`) |
## `vitepress init` ## `vitepress init`
현재 디렉토리에서 [설정 마법사](../guide/getting-started#setup-wizard) 시작. 현재 디렉터리에서 [설정 마법사](../guide/getting-started#setup-wizard)를 시작합니다.
### 사용법 ### 사용법 {#usage-3}
```sh ```sh
vitepress init vitepress init

@ -1,15 +1,15 @@
# 배지 {#badge} # 배지 {#badge}
배지는 헤더에 상태를 추가할 수 있게 해줍니다. 예를 들어, 섹션의 유형이나 지원되는 버전을 명시하는 것이 유용할 수 있습니다. 배지는 헤더에 상태를 추가할 수 있게 해줍니다. 예를 들어, 섹션의 타입을 지정하거나 지원되는 버전을 표시하는 데 유용할 수 있습니다.
## 사용법 {#usage} ## 사용법 {#usage}
글로벌하게 사용 가능한 `Badge` 컴포넌트를 사용할 수 있습니다. `Badge` 컴포넌트는 전역으로 사용 가능합니다.
```html ```html
### 제목 <Badge type="info" text="default" /> ### 제목 <Badge type="info" text="default" />
### 제목 <Badge type="tip" text="^1.9.0" /> ### 제목 <Badge type="tip" text="^1.9.0" />
### 제목 <Badge type="warning" text="beta" /> ### 제목 <Badge type="warning" text="배타" />
### 제목 <Badge type="danger" text="주의" /> ### 제목 <Badge type="danger" text="주의" />
``` ```
@ -17,22 +17,22 @@
### 제목 <Badge type="info" text="default" /> ### 제목 <Badge type="info" text="default" />
### 제목 <Badge type="tip" text="^1.9.0" /> ### 제목 <Badge type="tip" text="^1.9.0" />
### 제목 <Badge type="warning" text="beta" /> ### 제목 <Badge type="warning" text="배타" />
### 제목 <Badge type="danger" text="주의" /> ### 제목 <Badge type="danger" text="주의" />
## 사용자 정의 자식 요소 {#custom-children} ## 커스텀 하위 노드 {#custom-children}
`<Badge>`는 `children`을 받아들이며, 이는 배지 안에 표시됩니다. `<Badge>`는 `children`을 받아서 배지 내부에 표시합니다.
```html ```html
### 제목 <Badge type="info">사용자 정의 요소</Badge> ### 제목 <Badge type="info">커스텀 노드</Badge>
``` ```
### 제목 <Badge type="info">사용자 정의 요소</Badge> ### 제목 <Badge type="info">커스텀 노드</Badge>
## 타입 색상 사용자 정의 {#customize-type-color} ## 타입 색상 커스터마이징 {#customize-type-color}
css 변수를 오버라이딩함으로써 배지의 스타일을 사용자 정의할 수 있습니다. 다음은 기본값입니다: 배지의 스타일은 CSS 변수를 재정의하여 커스터마이징 할 수 있습니다. 다음은 기본값입니다:
```css ```css
:root { :root {
@ -56,14 +56,14 @@ css 변수를 오버라이딩함으로써 배지의 스타일을 사용자 정
## `<Badge>` ## `<Badge>`
`<Badge>` 컴포넌트는 다음의 prop들을 받습니다: `<Badge>` 컴포넌트는 다음과 같은 프로퍼티를 사용합니다:
```ts ```ts
interface Props { interface Props {
// `<slot>`이 전달되면, 이 값은 무시됩니다. // `<slot>`이 전달되면, 이 값은 무시됨.
text?: string text?: string
// 기본값은 `tip`입니다. // 기본값: `tip`.
type?: 'info' | 'tip' | 'warning' | 'danger' type?: 'info' | 'tip' | 'warning' | 'danger'
} }
``` ```

@ -1,13 +1,13 @@
# 카본 광고 {#carbon-ads} # 카본 광고 {#carbon-ads}
VitePress는 [카본 광고](https://www.carbonads.net/)에 대한 내장된 네이티브 지원을 제공합니다. config에서 카본 광고 자격증명을 정의함으로써, VitePress는 페이지에 광고를 표시합니다. VitePress는 [카본 광고](https://www.carbonads.net/)에 대한 기본적인 지원을 제공합니다. 구성에서 카본 광고 자격 증명을 정의하면 VitePress는 페이지에 광고를 표시합니다.
```js ```js
export default { export default {
themeConfig: { themeConfig: {
carbonAds: { carbonAds: {
code: '당신의-카본-코드', code: 'your-carbon-code',
placement: '당신의-카본-위치' placement: 'your-carbon-placement'
} }
} }
} }
@ -19,4 +19,4 @@ export default {
`//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}` `//cdn.carbonads.com/carbon.js?serve=${code}&placement=${placement}`
``` ```
카본 광고 설정에 대해 자세히 알아보려면, [카본 광고 웹사이트](https://www.carbonads.net/)를 방문해 주십시오. 카본 광고 구성에 대해 더 알고 싶다면 [카본 광고 웹사이트](https://www.carbonads.net/)를 방문하세요.

@ -1,14 +1,14 @@
# 기본 테마 설정 {#default-theme-config} # 기본 테마 구성 {#default-theme-config}
테마 설정을 통해 테마를 사용자 정의할 수 있습니다. 설정 파일의 `themeConfig` 옵션을 통해 테마 설정을 정의할 수 있습니다: 테마 구성은 테마를 커스텀 할 수 있게 해줍니다. 구성 파일에서 `themeConfig` 옵션을 통해 테마 구성을 정의할 수 있습니다:
```ts ```ts
export default { export default {
lang: 'en-US', lang: 'ko-KR',
title: 'VitePress', title: 'VitePress',
description: 'Vite & Vue로 구동되는 정적 사이트 생성기.', description: 'Vite 및 Vue로 기반 정적 사이트 생성기.',
// 테마 관련 설정. // 테마 관련 구성.
themeConfig: { themeConfig: {
logo: '/logo.svg', logo: '/logo.svg',
nav: [...], nav: [...],
@ -17,19 +17,19 @@ export default {
} }
``` ```
**이 페이지에 문서화된 옵션은 기본 테마에만 적용됩니다.** 다른 테마는 다른 테마 설정을 기대합니다. 커스텀 테마를 사용할 때, 테마 설정 객체는 테마로 전달되어 테마가 그것에 따라 조건적인 동작을 정의할 수 있습니다. **이 페이지에 문서화된 옵션은 기본 테마에만 적용됩니다.** 다른 테마는 다른 테마 구성이 필요합니다. 커스텀 테마를 사용하는 경우, 테마 구성 객체는 테마에 전달되어 테마가 이를 기반으로 다르게 동작할 수 있습니다.
## i18nRouting ## i18nRouting
- 타입: `boolean` - 타입: `boolean`
예를 들어 `zh`로 로케일을 변경하면 URL이 `/foo` (또는 `/en/foo/`)에서 `/zh/foo`로 변경됩니다. 이 동작을 비활성화하려면 `themeConfig.i18nRouting`을 `false`로 설정하세요. 로케일을 `ko`로 변경하면 URL이 `/foo` (또는 `/en/foo/`)에서 `/ko/foo`로 변경됩니다. 이 동작을 비활성화하려면 `themeConfig.i18nRouting`을 `false`로 설정하세요.
## logo ## logo
- 타입: `ThemeableImage` - 타입: `ThemeableImage`
내비게이션 바에 사이트 제목 바로 앞에 표시되는 로고 파일입니다. 경로 문자열을 받거나, 밝은/어두운 모드에 따라 다른 로고를 설정하기 위해 객체를 사용할 수 있습니다. 네비게이션 바에 사이트 제목 바로 앞에 표시할 로고 파일입니다. 경로 문자열 또는 라이트/다크 모드에 대해 다른 로고를 설정할 수 있는 객체를 사용합니다.
```ts ```ts
export default { export default {
@ -50,7 +50,7 @@ type ThemeableImage =
- 타입: `string | false` - 타입: `string | false`
내비게이션에서 기본 사이트 제목(`app config`의 `title`)을 대체하기 위해 이 항목을 사용자 정의할 수 있습니다. `false`로 설정하면 내비게이션의 제목이 비활성화됩니다. `logo`가 이미 사이트 제목 텍스트를 포함하고 있을 때 유용합니다. 이 항목을 커스텀하여 네비게이션 바의 기본 사이트 제목(애플리케이션 구성의 `title`)을 대체할 수 있습니다. `false`로 설정하면 네비게이션 바에서 제목이 비활성화됩니다. 이미 사이트 제목 텍스트가 포함된 `logo`가 있을 때 유용합니다.
```ts ```ts
export default { export default {
@ -64,7 +64,7 @@ export default {
- 타입: `NavItem` - 타입: `NavItem`
내비게이션 메뉴 항목의 설정입니다. 자세한 내용은 [기본 테마: Nav](./default-theme-nav#navigation-links)에서 확인할 수 있습니다. 네비게이션 바 메뉴 아이템의 구성입니다. 자세한 내용은 [기본 테마: 네비게이션 바](./default-theme-nav#navigation-links)를 참고하세요.
```ts ```ts
export default { export default {
@ -112,7 +112,7 @@ interface NavItemWithChildren {
- 타입: `Sidebar` - 타입: `Sidebar`
사이드바 메뉴 항목의 설정입니다. 자세한 내용은 [기본 테마: Sidebar](./default-theme-sidebar)에서 확인할 수 있습니다. 사이드바 메뉴 항목에 대한 구성입니다. 자세한 내용은 [기본 테마: 사이드바](./default-theme-sidebar)에서 확인하세요.
```ts ```ts
export default { export default {
@ -140,28 +140,41 @@ export interface SidebarMulti {
export type SidebarItem = { export type SidebarItem = {
/** /**
* 항목의 텍스트 레이블. * 아이템의 텍스트 레이블
*/ */
text?: string text?: string
/** /**
* 항목의 링크. * 아이템의 링크
*/ */
link?: string link?: string
/** /**
* 항목의 자식들. * 아이템의 하위 항목
*/ */
items?: SidebarItem[] items?: SidebarItem[]
/** /**
* 명시되지 않은 경우, 그룹은 접을 수 없습니다. * 명시하지 않은 경우, 그룹을 접을 수 없습니다.
* *
* `true`이면, 그룹은 접을 수 있고 기본적으로 접혀 있습니다 * `true`: 그룹은 접을 수 있고 기본적으로 접혀 있습니다.
* *
* `false`이면, 그룹은 접을 수 있지만 기본적으로 펼쳐져 있습니다 * `false`: 그룹은 접을 수 있고 기본적으로 펼쳐져 있습니다.
*/ */
collapsed?: boolean collapsed?: boolean
/**
* 하위 아이템에 대한 기본 경로입니다.
*/
base?: string
/**
* 이전/다음 페이지의 푸터에 나타나는 텍스트를 커스텀 합니다.
*/
docFooterText?: string
rel?: string
target?: string
} }
``` ```
@ -169,37 +182,37 @@ export type SidebarItem = {
- 타입: `boolean | 'left'` - 타입: `boolean | 'left'`
- 기본값: `true` - 기본값: `true`
- [frontmatter](./frontmatter-config#aside)를 통해 페이지별로 재정의 가능 - [전문](./frontmatter-config#aside)을 통해 페이지별로 재정의할 수 있습니다.
이 값을 `false`로 설정하면 aside 컨테이너의 렌더링을 방지합니다.\ `false`: 어사이드 컨테이너가 렌더링되지 않습니다.\
이 값을 `true`로 설정하면 aside를 오른쪽에 렌더링합니다.\ `true`: 어사이드가 오른쪽에 렌더링됩니다.\
이 값을 `left`로 설정하면 aside를 왼쪽에 렌더링합니다. `left`: 어사이드가 왼쪽에 렌더링됩니다.
모든 뷰포트에 대해 비활성화하려면 `outline: false`를 사용해야 합니다. 모든 뷰포트에서 비활성화하려면 `outline: false`를 사용해야 합니다.
## outline ## outline
- 타입: `Outline | Outline['level'] | false` - 타입: `Outline | Outline['level'] | false`
- [frontmatter](./frontmatter-config#outline)를 통해 페이지별로 레벨 재정의 가능 - [전문](./frontmatter-config#outline)을 사용해 각 페이지별로 계층 구조를 재정의할 수 있습니다.
이 값을 `false`로 설정하면 윤곽선 컨테이너의 렌더링을 방지합니다. 자세한 내용은 이 인터페이스를 참조하세요: 이 값을 `false`로 설정하면 아웃라인(개요) 컨테이너가 렌더링되지 않습니다. 자세한 내용은 아래 인터페이스를 참고하세요:
```ts ```ts
interface Outline { interface Outline {
/** /**
* 개요에 표시될 제목 수준. * 아웃라인에 표시할 제목 레벨.
* 단일 수치는 해당 수준의 제목만 표시됨을 의미합니다. * 단일 숫자는 해당 레벨의 제목만 표시됨을 의미합니다.
* 튜플이 전달되면 첫 번째 수치는 최소 수준이고 두 번째 수치는 최대 수준입니다. * 튜플이 전달되면, 첫 번째 숫자는 최소 수준을, 두 번째 숫자는 최대 수준을 나타냅니다.
* `'deep'`은 `[2, 6]`과 동일하며, `<h2>`부터 `<h6>`까지의 모든 제목이 표시됨을 의미합니다. * `'deep'`은 `[2, 6]`과 동일하며, 이는 `<h2>`에서 `<h6>`까지의 모든 제목이 표시됨을 의미합니다.
* *
* @default 2 * @default 2
*/ */
level?: number | [number, number] | 'deep' level?: number | [number, number] | 'deep'
/** /**
* 개요에 표시될 제목. * 아웃라인에 표시될 제목.
* *
* @default '이 페이지에서' * @default 'On this page'
*/ */
label?: string label?: string
} }
@ -209,7 +222,7 @@ interface Outline {
- 타입: `SocialLink[]` - 타입: `SocialLink[]`
내비게이션에 아이콘과 함께 소셜 계정 링크를 표시하기 위해 이 옵션을 정의할 수 있습니다. 이 옵션을 정의하여 네비게이션 바에 소셜 링크를 아이콘과 함께 표시할 수 있습니다.
```ts ```ts
export default { export default {
@ -217,14 +230,14 @@ export default {
socialLinks: [ socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }, { icon: 'github', link: 'https://github.com/vuejs/vitepress' },
{ icon: 'twitter', link: '...' }, { icon: 'twitter', link: '...' },
// SVG 문자열을 전달하여 사용자 정의 아이콘을 추가할 수도 있습니다: // SVG를 문자열로 전달하여 커스텀 아이콘을 추가할 수도 있습니다:
{ {
icon: { icon: {
svg: '<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Dribbble</title><path d="M12...6.38z"/></svg>' svg: '<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e8eaed"><path d="m354-287 126-76 126 77-33-144 111-96-146-13-58-136-58 135-146 13 111 97-33 143ZM233-120l65-281L80-590l288-25 112-265 112 265 288 25-218 189 65 281-247-149-247 149Zm247-350Z"/></svg>'
}, },
link: '...', link: '...',
// 접근성을 위해 사용자 정의 레이블을 포함할 수도 있습니다 (선택 사항이지만 권장됨): // 접근성을 위해 커스텀 레이블을 포함할 수도 있습니다 (선택 사항이지만 권장됨):
ariaLabel: '멋진 링크' ariaLabel: '스타 링크'
} }
] ]
} }
@ -256,16 +269,16 @@ type SocialLinkIcon =
## footer ## footer
- 타입: `Footer` - 타입: `Footer`
- [frontmatter](./frontmatter-config#footer)를 통해 페이지별로 재정의 가능 - [전문](./frontmatter-config#footer)을 사용해 페이지별로 재정의할 수 있습니다.
풋터 설정입니다. 풋터에 메시지나 저작권 텍스트를 추가할 수 있지만, 사이드바를 포함하지 않는 페이지에서만 표시됩니다. 이는 디자인 우려사항 때문입니다. 푸터 구성입니다. 메시지 또는 저작권 텍스트를 푸터에 추가할 수 있지만, 이는 페이지에 사이드바가 포함되지 않은 경우에만 표시됩니다. 이는 디자인상의 이유 때문입니다.
```ts ```ts
export default { export default {
themeConfig: { themeConfig: {
footer: { footer: {
message: 'MIT 라이선스에 따라 릴리즈되었습니다.', message: 'MIT 라이선스에 따라 릴리즈되었습니다.',
copyright: '저작권 © 2019-현재 Evan You' copyright: '저작권 © 2019-현재 홍길동'
} }
} }
} }
@ -274,16 +287,16 @@ export default {
```ts ```ts
export interface Footer { export interface Footer {
message?: string message?: string
COPYRIGHT?: string copyright?: string
} }
``` ```
## editLink ## editLink
- 타입: `EditLink` - 타입: `EditLink`
- [frontmatter](./frontmatter-config#editlink)를 통해 페이지별로 재정의 가능 - [전문](./frontmatter-config#footer)을 사용해 페이지별로 재정의할 수 있습니다.
편집 링크를 통해 GitHub이나 GitLab과 같은 Git 관리 서비스에서 페이지를 편집하는 링크를 표시할 수 있습니다. [기본 테마: 편집 링크](./default-theme-edit-link)에서 자세한 내용을 확인하세요. 편집 링크 기능을 사용하면 GitHub 또는 GitLab과 같은 Git 관리 서비스에서 페이지를 편집할 수 있는 링크를 표시할 수 있습니다. 자세한 내용은 [기본 테마: 편집 링크](./default-theme-edit-link)를 참고하세요.
```ts ```ts
export default { export default {
@ -307,13 +320,13 @@ export interface EditLink {
- 타입: `LastUpdatedOptions` - 타입: `LastUpdatedOptions`
마지막 업데이트 텍스트와 날짜 형식을 사용자 정의할 수 있습니다. 마지막 업데이트된 날짜의 텍스트와 날짜 형식을 커스텀 할 수 있습니다.
```ts ```ts
export default { export default {
themeConfig: { themeConfig: {
lastUpdated: { lastUpdated: {
text: '업데이트 되었습니다', text: '마지막 업데이트 날짜',
formatOptions: { formatOptions: {
dateStyle: 'full', dateStyle: 'full',
timeStyle: 'medium' timeStyle: 'medium'
@ -326,7 +339,7 @@ export default {
```ts ```ts
export interface LastUpdatedOptions { export interface LastUpdatedOptions {
/** /**
* @default '마지막 업데이트' * @default 'Last updated'
*/ */
text?: string text?: string
@ -342,7 +355,7 @@ export interface LastUpdatedOptions {
- 타입: `AlgoliaSearch` - 타입: `AlgoliaSearch`
[Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch)를 사용하여 문서 사이트를 검색할 수 있는 옵션입니다. [기본 테마: 검색](./default-theme-search)에서 자세히 알아보세요. [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch)를 사용하여 문서 사이트를 검색할 수 있는 옵션입니다. 자세한 내용은 [기본 테마: 검색](./default-theme-search)을 참고하세요.
```ts ```ts
export interface AlgoliaSearchOptions extends DocSearchProps { export interface AlgoliaSearchOptions extends DocSearchProps {
@ -376,13 +389,13 @@ export interface CarbonAdsOptions {
} }
``` ```
[기본 테마: Carbon Ads](./default-theme-carbon-ads)에서 자세히 알아보세요. 자세한 내용은 [기본 테마: 카본 광고](./default-theme-carbon-ads)를 참고하세요.
## docFooter ## docFooter
- 타입: `DocFooter` - 타입: `DocFooter`
영어로 문서를 작성하지 않을 때 이전 및 다음 링크 위에 나타나는 텍스트를 사용자 정의하는 데 사용할 수 있습니다. 또한 이전/다음 링크를 전역적으로 비활성화할 수 있습니다. 이전/다음 링크를 선택적으로 활성화/비활성화하려면 [frontmatter](./default-theme-prev-next-links)를 사용할 수 있습니다. 이 옵션은 이전 및 다음 링크에 표시되는 텍스트를 커스텀하는 데 사용합니다. 영어로 문서를 작성하지 않는 경우 유용합니다. 또한 이전/다음 링크를 전역적으로 비활성화할 수도 있습니다. 선택적으로 이전/다음 링크를 활성화/비활성화하려면 [전문](./default-theme-prev-next-links)을 사용합니다.
```ts ```ts
export default { export default {
@ -405,48 +418,48 @@ export interface DocFooter {
## darkModeSwitchLabel ## darkModeSwitchLabel
- 타입: `string` - 타입: `string`
- 기본값: `외관` - 기본값: `Appearance`
어두운 모드 전환 레이블을 사용자 정의하는 데 사용할 수 있습니다. 이 레이블은 모바일 뷰에서만 표시됩니다. 이 옵션은 다크 모드 스위치 레이블을 커스텀할 때 사용합니다. 이 레이블은 모바일 뷰에서만 표시됩니다.
## lightModeSwitchTitle ## lightModeSwitchTitle
- 타입: `string` - 타입: `string`
- 기본값: `라이트 테마로 전환` - 기본값: `Switch to light theme`
호버 시 나타나는 라이트 모드 전환 제목을 사용자 정의하는 데 사용할 수 있습니다. 이 옵션은 라이트 모드 스위치 타이틀을 커스텀할 때 사용합니다. 이것은 호버(hover)할 때 나타납니다.
## darkModeSwitchTitle ## darkModeSwitchTitle
- 타입: `string` - 타입: `string`
- 기본값: `어두운 테마로 전환` - 기본값: `Switch to dark theme`
호버 시 나타나는 어두운 모드 전환 제목을 사용자 정의하는 데 사용할 수 있습니다. 호버 시 나타나는 다크 모드 스위치 타이틀을 커스텀할 때 사용합니다.
## sidebarMenuLabel ## sidebarMenuLabel
- 타입: `string` - 타입: `string`
- 기본값: `메뉴` - 기본값: `Menu`
사이드바 메뉴 레이블을 사용자 정의하는 데 사용할 수 있습니다. 이 레이블은 모바일 뷰에서만 표시됩니다. 사이드바 메뉴 레이블을 커스텀 할 때 사용합니다. 이 레이블은 모바일 뷰에서만 표시됩니다.
## returnToTopLabel ## returnToTopLabel
- 타입: `string` - 타입: `string`
- 기본값: `맨 위로 돌아가기` - 기본값: `Return to top`
맨 위로 돌아가기 버튼의 레이블을 사용자 정의하는 데 사용할 수 있습니다. 이 레이블은 모바일 뷰에서만 표시됩니다. 맨 위로 이동 버튼의 레이블을 커스텀 할 때 사용합니다. 이 레이블은 모바일 뷰에서만 표시됩니다.
## langMenuLabel ## langMenuLabel
- 타입: `string` - 타입: `string`
- 기본값: `언어 변경` - 기본값: `Change language`
내비게이션 바의 언어 토글 버튼의 aria-label을 사용자 정의하는 데 사용됩니다. [i18n](../guide/i18n)을 사용하는 경우에만 사용됩니다. 네비게이션 바에서 언어 토글 버튼의 aria-label을 커스텀 할 때 사용합니다. 이는 [i18n](../guide/i18n)을 사용하는 경우에만 사용됩니다.
## externalLinkIcon ## externalLinkIcon
- 타입: `boolean` - 타입: `boolean`
- 기본값: `false` - 기본값: `false`
마크다운의 외부 링크 옆에 외부 링크 아이콘을 표시할지 여부입니다. 마크다운의 외부 링크 옆에 외부 링크 아이콘을 표시할지 여부를 설정합니다.

@ -1,8 +1,8 @@
# 편집 링크 {#edit-link} # 편집 링크 {#edit-link}
## 사이트 레벨 설정 {#site-level-config} ## 사이트 단계에서 설정하기 {#site-level-config}
편집 링크를 사용하면 GitHub이나 GitLab과 같은 Git 관리 서비스에서 페이지를 편집하는 링크를 표시할 수 있습니다. 활성화하려면, `themeConfig.editLink` 옵션을 설정에 추가하세요. 편집 링크는 GitHub, GitLab과 같은 Git 관리 서비스에서 페이지를 편집할 수 있는 링크를 표시할 수 있게 해줍니다. 이를 활성화하려면 `themeConfig.editLink` 옵션을 구성에 추가하세요.
```js ```js
export default { export default {
@ -16,7 +16,7 @@ export default {
`pattern` 옵션은 링크의 URL 구조를 정의하며, `:path`는 페이지 경로로 대체됩니다. `pattern` 옵션은 링크의 URL 구조를 정의하며, `:path`는 페이지 경로로 대체됩니다.
또한 [`PageData`](./runtime-api#usedata)를 인수로 받아 URL 문자열을 반환하는 순수 함수를 넣을 수도 있습니다. 또한, [`PageData`](./runtime-api#usedata)를 인자로 받아 URL 문자열을 반환하는 순수 함수를 사용할 수도 있습니다.
```js ```js
export default { export default {
@ -34,9 +34,9 @@ export default {
} }
``` ```
이 함수는 부작용이 없어야 하며, 범위 외의 것에 접근할 수 없으며, 브라우저에서 직렬화되어 실행됩니다. 이 함수는 브라우저에서 직렬화되어 실행되므로, 부작용을 가지지 않고 해당 스코프 외부의 어떤 것도 참조하지 않도록 해야 합니다.
기본적으로, 이 옵션은 문서 페이지 하단에 "Edit this page"라는 링크 텍스트를 추가합니다. `text` 옵션을 정의하여 이 텍스트를 사용자 정의할 수 있습니다. 기본적으로 이 설정은 문서 페이지 하단에 "Edit this page"이라는 텍스트 링크를 추가합니다. 이 텍스트는 `text` 옵션을 정의하여 커스터마이징 할 수 있습니다.
```js ```js
export default { export default {
@ -49,9 +49,9 @@ export default {
} }
``` ```
## 프론트매터 설정 {#frontmatter-config} ## 전문에서 설정하기 {#frontmatter-config}
프론트매터의 `editLink` 옵션을 사용하여 페이지별로 이 기능을 비활성화할 수 있습니다: 페이지별로 이 기능을 비활성화하려면, 전문에서 `editLink` 옵션을 사용하세요:
```yaml ```yaml
--- ---

@ -1,13 +1,13 @@
# 푸터 {#footer} # 푸터 {#footer}
VitePress는 `themeConfig.footer`가 존재할 때 페이지 하단에 전역 푸터를 표시합니다. `themeConfig.footer`가 존재하면 VitePress는 페이지 하단에 전역 푸터를 표시합니다.
```ts ```ts
export default { export default {
themeConfig: { themeConfig: {
footer: { footer: {
message: 'Released under the MIT License.', message: 'MIT 라이선스에 따라 릴리즈되었습니다.',
copyright: 'Copyright © 2019-present Niceplugin' copyright: '저작권 © 2019-현재 홍길동'
} }
} }
} }
@ -23,28 +23,28 @@ export interface Footer {
} }
``` ```
위의 구성은 HTML 문자열도 지원합니다. 예를 들어, 푸터 텍스트에 몇 가지 링크를 구성하고 싶다면, 다음과 같이 구성을 조정할 수 있습니다: 위의 구성은 HTML 문자열도 지원합니다. 예를 들어, 푸터 텍스트에 링크를 포함하고 싶다면, 다음과 같이 구성을 수정하면 됩니다:
```ts ```ts
export default { export default {
themeConfig: { themeConfig: {
footer: { footer: {
message: '<a href="https://github.com/vuejs/vitepress/blob/main/LICENSE">MIT 라이선스</a>에 따라 릴리즈되었습니다.', message: '<a href="https://github.com/vuejs/vitepress/blob/main/LICENSE">MIT 라이선스</a>에 따라 릴리즈되었습니다.',
copyright: '저작권 © 2019-현재 <a href="https://github.com/yyx990803">Evan You</a>' copyright: '저작권 © 2019-현재 <a href="https://github.com/niceplugin">홍길동</a>'
} }
} }
} }
``` ```
::: warning ::: warning
`message`와 `저작권`에는 `<p>` 요소 안에 렌더링되기 때문에 인라인 요소만 사용할 수 있습니다. 블록 요소를 추가하고 싶다면, 대신 [`layout-bottom`](../guide/extending-default-theme#layout-slots) 슬롯을 사용하는 것을 고려하세요. `message`와 `copyright`는 `<p>` 엘리먼트 내부에 렌더링되므로 인라인 엘리먼트만 사용할 수 있습니다. 블록 엘리먼트를 추가하려면 [`layout-bottom`](../guide/extending-default-theme#layout-slots) 슬롯을 사용하는 것이 좋습니다.
::: :::
푸터는 [사이드바](./default-theme-sidebar)가 보이는 경우에는 표시되지 않습니다. [사이드바](./default-theme-sidebar)가 표시되는 경우 푸터는 표시되지 않습니다.
## 프론트매터 구성 {#frontmatter-config} ## 전문에서 설정하기 {#frontmatter-config}
이 기능은 프론트매터의 `footer` 옵션을 사용하여 페이지별로 비활성화될 수 있습니다: 이 기능은 전문의 `footer` 옵션을 사용하여 페이지별로 비활성화 할 수 있습니다.
```yaml ```yaml
--- ---

@ -1,6 +1,6 @@
# 홈페이지 {#home-page} # 홈 페이지 {#home-page}
VitePress 기본 테마는 홈페이지 레이아웃을 제공하며, 이 사이트의 [홈페이지](../)에서도 사용된 것을 볼 수 있습니다. [frontmatter](./frontmatter-config)에 `layout: home`을 지정함으로써 여러분의 페이지에도 이를 사용할 수 있습니다. VitePress 기본 테마는 홈 페이지 레이아웃을 제공합니다. 이것은 이 사이트의 [홈 페이지](../)에도 사용되었습니다. `layout: home`을 [전문](./frontmatter-config)에 지정하여 어느 페이지에서도 이를 사용할 수 있습니다.
```yaml ```yaml
--- ---
@ -8,11 +8,11 @@ layout: home
--- ---
``` ```
하지만, 이 옵션만으로는 큰 효과를 보지 못합니다. `hero` 및 `features`와 같은 추가적인 옵션을 설정함으로써 홈페이지에 여러 가지 다른 사전 템플릿 "섹션"을 추가할 수 있습니다. 하지만 이 옵션만으로는 많은 것을 할 수 없습니다. 다행히도 `hero` 및 `features`와 같은 추가 옵션을 설정하여 홈 페이지에 다양한 사전 템플릿 "섹션"들을 추가할 수 있습니다.
## Hero 섹션 {#hero-section} ## Hero 섹션 {#hero-section}
Hero 섹션은 홈페이지 맨 위에 옵니다. 여기에서 Hero 섹션을 구성하는 방법입니다. Hero 섹션은 홈 페이지의 상단에 위치합니다. Hero 섹션을 구성하는 방법은 다음과 같습니다.
```yaml ```yaml
--- ---
@ -20,38 +20,38 @@ layout: home
hero: hero:
name: VitePress name: VitePress
text: Vite & Vue로 구동되는 정적 사이트 생성기. text: Vite & Vue 기반 정적 사이트 생성기
tagline: Lorem ipsum... tagline: 단 몇 분 만에 마크다운을 우아한 문서로 변환
image: image:
src: /logo.png src: /logo.png
alt: VitePress alt: VitePress
actions: actions:
- theme: brand - theme: brand
text: 시작하기 text: VitePress란 무엇인가?
link: /guide/what-is-vitepress link: /guide/what-is-vitepress
- theme: alt - theme: alt
text: GitHub에서 보기 text: GitHub
link: https://github.com/vuejs/vitepress link: https://github.com/vuejs/vitepress
--- ---
``` ```
```ts ```ts
interface Hero { interface Hero {
// `text` 위에 표시되는 문자열입니다. 브랜드 색상이 // `text` 위에 브랜드 색상으로 표시되는 문자열.
// 함께 제공되며 제품 이름과 같이 짧을 것으로 예상됩니다. // 제품명 등 간략한 내용을 추천.
name?: string name?: string
// hero 섹션의 주요 텍스트입니다. // hero 섹션의 본문.
// 이는 `h1` 태그로 정의됩니다. // `h1` 태그로 정의됨.
text: string text: string
// `text` 아래에 표시되는 태그라인입니다. // `text` 아래에 표시되는 슬로건 문자열.
tagline?: string tagline?: string
// 이미지는 텍스트 및 태그라인 영역 옆에 표시됩니다. // `text` 및 `tagline` 옆에 표시되는 이미지.
image?: ThemeableImage image?: ThemeableImage
// 홈 hero 섹션에 표시할 작업 버튼들입니다. // hero 섹션에 표시할 버튼 리스트.
actions?: HeroAction[] actions?: HeroAction[]
} }
@ -61,26 +61,26 @@ type ThemeableImage =
| { light: string; dark: string; alt?: string } | { light: string; dark: string; alt?: string }
interface HeroAction { interface HeroAction {
// 버튼의 색상 테마입니다. 기본값은 `brand`입니다. // 버튼의 색상 테마. 기본값: `brand`
theme?: 'brand' | 'alt' theme?: 'brand' | 'alt'
// 버튼의 레이블입니다. // 버튼의 레이블.
text: string text: string
// 버튼의 목적지 링크입니다. // 버튼의 목적지 링크.
link: string link: string
// 링크 타겟 속성입니다. // 링크의 target 어트리뷰트.
target?: string target?: string
// 링크 rel 속성입니다. // 링크의 rel 어트리뷰트.
rel?: string rel?: string
} }
``` ```
### 이름 색상 사용자 정의 {#customizing-the-name-color} ### `name` 색상 커스터마이징 {#customizing-the-name-color}
VitePress는 `name`에 대해 브랜드 색상 (`--vp-c-brand-1`)을 사용합니다. 하지만, `--vp-home-hero-name-color` 변수를 오버라이딩함으로써 이 색상을 사용자 정의할 수 있습니다. VitePress는 `name`에 브랜드 색상(`--vp-c-brand-1`)을 사용합니다. 하지만 `--vp-home-hero-name-color` 변수를 재정의하여 이 색상을 커스텀 할 수 있습니다.
```css ```css
:root { :root {
@ -88,7 +88,7 @@ VitePress는 `name`에 대해 브랜드 색상 (`--vp-c-brand-1`)을 사용합
} }
``` ```
또한 `--vp-home-hero-name-background`와 결합하여 `name`에 그라데이션 색상을 부여할 수도 있습니다. 또한 `--vp-home-hero-name-background` 변수를 정의해 추가적으로 `name`을 그라데이션 색상으로 커스터마이징도 가능합니다.
```css ```css
:root { :root {
@ -97,11 +97,11 @@ VitePress는 `name`에 대해 브랜드 색상 (`--vp-c-brand-1`)을 사용합
} }
``` ```
## 기능 섹션 {#features-section} ## Features 섹션 {#features-section}
기능 섹션에서는 Hero 섹션 바로 다음에 보여주고 싶은 기능의 수를 제한 없이 나열할 수 있습니다. 구성하려면 frontmatter에 `features` 옵션을 전달합니다. Features 섹션에서는 Hero 섹션 바로 아래에 표시할 각 feature를 원하는 만큼 나열할 수 있습니다. 이를 구성하려면 `features` 옵션을 전문에 전달하면 됩니다.
각 기능에 대해 이모지나 이미지 형태의 아이콘을 제공할 수 있습니다. 구성된 아이콘가 이미지(svg, png, jpeg...)인 경우, 적절한 너비와 높이를 가진 아이콘을 제공해야 합니다; 필요한 경우 어두운 테마 및 밝은 테마의 변형뿐만 아니라 설명, 본질적인 크기도 제공할 수 있습니다. 각 feature에 아이콘을 제공할 수 있으며, 이는 이모지 또는 이미지의 형태일 수 있습니다. 아이콘으로 이미지(svg, png, jpeg 등)를 사용하려면 적절한 너비와 높이를 제공해야 하며, 필요에 따라 설명, 이미지의 고유 크기, 다크 테마와 라이트 테마에 대한 변형 아이콘도 제공할 수 있습니다.
```yaml ```yaml
--- ---
@ -109,49 +109,49 @@ layout: home
features: features:
- icon: 🛠️ - icon: 🛠️
title: 항상 간단하고 최소한의 title: Simple and minimal, always
details: Lorem ipsum... details: Lorem ipsum...
- icon: - icon:
src: /cool-feature-icon.svg src: /cool-feature-icon.svg
title: 또 다른 멋진 기능 title: Another cool feature
details: Lorem ipsum... details: Lorem ipsum...
- icon: - icon:
dark: /dark-feature-icon.svg dark: /dark-feature-icon.svg
light: /light-feature-icon.svg light: /light-feature-icon.svg
title: 또 다른 멋진 기능 title: Another cool feature
details: Lorem ipsum... details: Lorem ipsum...
--- ---
``` ```
```ts ```ts
interface Feature { interface Feature {
// 각 기능 상자에 아이콘을 표시합니다. // 각 feature 박스에 표시할 아이콘.
icon?: FeatureIcon icon?: FeatureIcon
// 기능의 제목입니다. // feature의 제목.
title: string title: string
// 기능의 세부 정보입니다. // feature의 세부 정보.
details: string details: string
// 기능 구성 요소에서 클릭 시 링크합니다. // feature 컴포넌트 클릭 시 링크.
// 링크는 내부 또는 외부 모두 가능합니다. // 링크는 내부 또는 외부 모두 가능.
// //
// 예: `guide/reference/default-theme-home-page` 또는 `https://example.com` // 예: `guide/reference/default-theme-home-page` 또는 `https://example.com`
link?: string link?: string
// 기능 구성 요소 내에서 표시될 링크 텍스트입니다. // feature 컴포넌트 내 표시될 링크 텍스트.
// `link` 옵션과 함께 사용하는 것이 좋습니다. // `link` 옵션과 함께 사용하는 것을 추천.
// //
// 예: `더 알아보기`, `페이지 방문`, 등 // 예: `더 알아보기`, `페이지 방문` 등
linkText?: string linkText?: string
// `link` 옵션을 위한 링크 rel 속성입니다. // `link` 옵션을 위한 링크 rel 어트리뷰트.
// //
// 예: `external` // 예: `external`
rel?: string rel?: string
// `link` 옵션을 위한 링크 target 속성입니다. // `link` 옵션을 위한 링크 target 어트리뷰트.
target?: string target?: string
} }
@ -169,7 +169,7 @@ type FeatureIcon =
## 마크다운 컨텐츠 {#markdown-content} ## 마크다운 컨텐츠 {#markdown-content}
`---` frontmatter 구분자 아래에 마크다운을 더함으로써 사이트의 홈페이지에 추가 컨텐츠를 추가할 수 있습니다. 홈 페이지 레이아웃에 추가 컨텐츠를 작성하려면 전문 구분선 `---` 아래에 마크다운을 추가하면 됩니다.
````md ````md
--- ---
@ -177,12 +177,12 @@ layout: home
hero: hero:
name: VitePress name: VitePress
text: Vite & Vue로 구동되는 정적 사이트 생성기. text: Vite & Vue 기반 정적 사이트 생성기
--- ---
## 시작하기 ## 시작하기
`npx`를 사용하여 바로 VitePress를 사용할 수 있습니다! `npx`를 사용하여 VitePress를 바로 시작할 수 있습니다!
```sh ```sh
npm init npm init
@ -191,5 +191,5 @@ npx vitepress init
```` ````
::: info ::: info
VitePress는 항상 `layout: home` 페이지의 추가 컨텐츠에 자동 스타일을 적용하지는 않았습니다. 이전 동작으로 되돌리려면, frontmatter에 `markdownStyles: false`를 추가할 수 있습니다. `layout: home` 페이지의 추가 컨텐츠에 자동으로 기본 마크다운 스타일이 적용됩니다(영문 원서에서는 반대로 설명함). 스타일을 적용하지 않으려면 전문에 `markdownStyles: false`를 추가하면 됩니다.
::: :::

@ -1,12 +1,12 @@
# 마지막 업데이트 시간 {#last-updated} # 마지막 업데이트 날짜 {#last-updated}
마지막 내용의 업데이트 시간은 페이지의 오른쪽 하단에 표시됩니다. 활성화하려면 config에 `lastUpdated` 옵션을 추가하세요. 마지막 업데이트 날짜는 페이지 오른쪽 하단에 표시됩니다. 이를 활성화하려면 구성 파일에 `lastUpdated` 옵션을 추가하세요.
::: tip ::: tip
업데이트 시간을 보려면 markdown 파일을 커밋해야 합니다. 마크다운 파일을 커밋해야 업데이트된 시간을 확인할 수 있습니다.
::: :::
## 사이트 수준 설정 {#site-level-config} ## 사이트 단계에서 설정하기 {#site-level-config}
```js ```js
export default { export default {
@ -14,9 +14,9 @@ export default {
} }
``` ```
## 프런트매터 설정 {#frontmatter-config} ## 전문에서 설정하기 {#frontmatter-config}
이 기능은 frontmatter의 `lastUpdated` 옵션을 사용하여 페이지별로 비활성화할 수 있습니다: 페이지별로 이 기능을 비활성화하려면, 전문에서 `lastUpdated` 옵션을 사용하세요:
```yaml ```yaml
--- ---
@ -24,4 +24,4 @@ lastUpdated: false
--- ---
``` ```
자세한 내용은 [기본 테마: 마지막 업데이트 시간](./default-theme-config#lastupdated)를 참조하세요. 테마 수준에서 참 값을 설정하면 사이트 또는 페이지 수준에서 명시적으로 비활성화하지 않는 한 기능이 활성화됩니다. 자세한 내용은 [기본 테마: lastUpdated](./default-theme-config#lastupdated)를 참고하세요. 테마 레벨에서 참(truthy) 값을 설정하면, 사이트나 페이지 레벨에서 명시적으로 비활성화하지 않는 한 이 기능이 활성화됩니다.

@ -1,6 +1,6 @@
# 레이아웃 {#layout} # 레이아웃 {#layout}
페이지 [프런트매터](./frontmatter-config)에 `layout` 옵션을 설정함으로써 페이지 레이아웃을 선택할 수 있습니다. `doc`, `page`, `home`의 세 가지 레이아웃 옵션이 있습니다. 아무것도 지정하지 않으면, 해당 페이지는 `doc` 페이지로 처리됩니다. 페이지의 [전문](./frontmatter-config)에 `layout` 옵션을 설정하여 페이지 레이아웃을 선택할 수 있습니다. `doc`, `page`, `home` 세 가지 레이아웃 옵션이 있습니다. 아무것도 지정하지 않으면 `doc` 페이지로 처리됩니다.
```yaml ```yaml
--- ---
@ -8,38 +8,38 @@ layout: doc
--- ---
``` ```
## Doc 레이아웃 {#doc-layout} ## `doc` 레이아웃 {#doc-layout}
`doc` 옵션은 기본 레이아웃이며, 전체 마크다운 내용을 "문서화"된 모양으로 스타일링합니다. 이것은 전체 내용을 `vp-doc` css 클래스로 감싸고, 그 아래 요소들에 스타일을 적용함으로써 작동합니다. `doc` 옵션은 기본 레이아웃으로, 전체 마크다운 콘텐츠를 "문서" 스타일로 변환합니다. 이 레이아웃은 전체 콘텐츠를 `vp-doc` CSS 클래스로 감싸고, 하위 엘리먼트에 스타일을 적용하는 방식으로 작동합니다.
`p`나 `h2`와 같은 거의 모든 일반 요소들은 특별한 스타일링을 받습니다. 따라서 마크다운 내용 내에 사용자 정의 HTML을 추가할 경우, 이러한 스타일들에 영향을 받게 될 것임을 명심하세요. `p`나 `h2` 같은 거의 모든 일반적인 엘리먼트들이 특별한 스타일을 갖게 됩니다. 따라서 마크다운 콘텐츠에 커스텀 HTML을 추가할 경우, 해당 HTML도 이러한 스타일의 영향을 받게 된다는 점을 유념해야 합니다.
또한 아래 나열된 문서화 특정 기능들을 제공합니다. 이 기능들은 이 레이아웃에서만 활성화됩니다. 이 레이아웃에서는 아래에 나열된 문서 전용 기능들도 제공됩니다. 이 기능들은 오직 이 레이아웃에서만 활성화됩니다.
- 편집 링크 - 편집 링크
- 이전/다음 링크 - 이전/다음 링크
- 개요 - 개요(outline)
- [카본 광고](./default-theme-carbon-ads) - [카본 광고](./default-theme-carbon-ads)
## 페이지 레이아웃 {#page-layout} ## `page` 레이아웃 {#page-layout}
`page` 옵션은 "빈 페이지"로 처리됩니다. 마크다운은 여전히 파싱되며, 모든 [마크다운 확장](../guide/markdown) 기능은 `doc` 레이아웃과 동일하게 작동하지만, 기본 스타일은 적용받지 않습니다. `page` 옵션은 "빈 페이지"로 처리됩니다. 마크다운은 여전히 파싱되며, 모든 [마크다운 확장 기능](../guide/markdown)이 `doc` 레이아웃과 동일하게 작동하지만, 기본 스타일링은 적용되지 않습니다.
페이지 레이아웃을 통해 VitePress 테마의 마크업 영향을 받지 않고 모든 것을 직접 스타일링할 수 있습니다. 이는 사용자 정의 페이지를 생성하고 싶을 때 유용합니다. 이 페이지 레이아웃은 VitePress 테마가 마크업에 영향을 미치지 않도록 하여, 모든 스타일을 직접 지정할 수 있게 해줍니다. 이는 커스텀 페이지를 만들고자 할 때 유용합니다.
이 레이아웃에서도 페이지가 일치하는 사이드바 구성이 있는 경우 여전히 사이드바가 표시됨을 유의하세요. 이 레이아웃에서도 페이지에 매칭되는 사이드바 구성이 있는 경우 사이드바는 여전히 표시됩니다.
## 홈 레이아웃 {#home-layout} ## `home` 레이아웃 {#home-layout}
`home` 옵션은 템플릿화된 "홈페이지"를 생성합니다. 이 레이아웃에서는 `hero` 및 `features`와 같은 추가 옵션을 설정해 컨텐츠를 더 자세히 커스터마이즈할 수 있습니다. 자세한 내용은 [기본 테마: 홈 페이지](./default-theme-home-page)를 방문해주세요. `home` 옵션은 템플릿화된 "홈 페이지"를 생성합니다. 이 레이아웃에서는 `hero`와 `features` 같은 추가 옵션을 설정하여 콘텐츠를 더 커스터마이징 할 수 있습니다. 자세한 내용은 [기본 테마: 홈 페이지](./default-theme-home-page)를 참고하세요.
## 레이아웃 없음 {#no-layout} ## 레이아웃 없음 {#no-layout}
레이아웃을 원하지 않는 경우, 프런트매터를 통해 `layout: false`를 전달할 수 있습니다. 이 옵션은 완전히 맞춤화된 랜딩 페이지(기본적으로 사이드바, 내비게이션 바, 또는 푸터 없음)를 원할 때 유용합니다. 어떤 레이아웃도 원하지 않는 경우, 전문에 `layout: false`를 전달할 수 있습니다. 이 옵션은 (기본적으로 사이드바, 네비게이션 바, 또는 푸터가 없는) 완전히 커스터마이징 가능한 랜딩 페이지를 만들고자 할 때 유용합니다.
## 사용자 정의 레이아웃 {#custom-layout} ## 커스텀 레이아웃 {#custom-layout}
또한 사용자 정의 레이아웃을 사용할 수 있습니다: 커스텀 레이아웃을 사용할 수도 있습니다:
```md ```md
--- ---
@ -47,7 +47,7 @@ layout: foo
--- ---
``` ```
이것은 컨텍스트에 등록된 `foo`라는 이름의 컴포넌트를 찾습니다. 예를 들어, `.vitepress/theme/index.ts`에서 컴포넌트를 전역으로 등록할 수 있습니다: 이것은 컨텍스트에 등록된 `foo`라는 이름의 컴포넌트를 찾습니다. 예를 들어 `.vitepress/theme/index.ts`에서 컴포넌트를 전역으로 등록할 수 있습니다:
```ts ```ts
import DefaultTheme from 'vitepress/theme' import DefaultTheme from 'vitepress/theme'

@ -1,10 +1,10 @@
# Nav {#nav} # 네비게이션 바 {#nav}
Nav 페이지 상단에 표시되는 내비게이션 바입니다. 사이트 제목, 전역 메뉴 링크 등을 포함하고 있습니다. 네비게이션 바는 페이지 상단에 표시되며, 사이트 제목, 전역 메뉴 링크 등이 포함됩니다.
## 사이트 제목 및 로고 {#site-title-and-logo} ## 사이트 제목 및 로고 {#site-title-and-logo}
기본적으로 nav는 [`config.title`](./site-config#title) 값이 참조하는 사이트 제목을 표시합니다. nav에 표시되는 내용을 변경하고 싶다면 `themeConfig.siteTitle` 옵션에 사용자 정의 텍스트를 정의할 수 있습니다. 기본적으로 네비게이션 바는 [`config.title`](./site-config#title) 값을 참조하여 사이트 제목을 표시합니다. 여기에 표시되는 내용을 변경하려면 `themeConfig.siteTitle` 옵션에 커스텀 텍스트를 정의합니다.
```js ```js
export default { export default {
@ -14,7 +14,7 @@ export default {
} }
``` ```
사이트에 로고가 있다면 이미지 경로를 전달하여 표시할 수 있습니다. 로고를 `public` 디렉터리에 위치시키고, 그 절대 경로를 정의해야 합니다. 사이트에 로고가 있는 경우, 이미지의 경로를 전달하여 로고를 표시할 수 있습니다. 로고는 `public` 폴더에 배치하고, 이것의 절대 경로를 정의해야 합니다.
```js ```js
export default { export default {
@ -24,7 +24,7 @@ export default {
} }
``` ```
로고를 추가하면 사이트 제목과 함께 표시됩니다. 로고만 필요하고 사이트 제목 텍스트를 숨기고 싶다면 `siteTitle` 옵션에 `false`를 설정하세요. 로고를 추가하면 사이트 제목과 함께 표시됩니다. 로고만 필요하고 사이트 제목 텍스트를 숨기고 싶다면, `siteTitle` 옵션을 `false`로 설정하면 됩니다.
```js ```js
export default { export default {
@ -35,27 +35,27 @@ export default {
} }
``` ```
`alt` 속성을 추가하거나 어두운/밝은 모드에 따라 로고를 커스터마이즈하고 싶다면 객체로써 로고를 전달할 수 있습니다. 자세한 내용은 [`themeConfig.logo`](./default-theme-config#logo)를 참조하세요. 로고에 `alt` 어트리뷰트를 추가하거나 다크/라이트 모드에 따라 커스터마이징 하려면, 로고를 객체 형태로 전달해야 합니다. 자세한 내용은 [`themeConfig.logo`](./default-theme-config#logo)를 참고하세요.
## 내비게이션 링크 {#navigation-links} ## 네비게이션 바 링크 {#navigation-links}
`themeConfig.nav` 옵션을 정의하여 nav에 링크를 추가할 수 있습니다. `themeConfig.nav` 옵션을 정의하여 네비게이션 바에 링크를 추가할 수 있습니다.
```js ```js
export default { export default {
themeConfig: { themeConfig: {
nav: [ nav: [
{ text: '가이드', link: '/guide' }, { text: '가이드', link: '/guide' },
{ text: '설정', link: '/config' }, { text: '구성', link: '/config' },
{ text: '변경사항', link: 'https://github.com/...' } { text: '변경사항', link: 'https://github.com/...' }
] ]
} }
} }
``` ```
`text`는 nav에 표시되는 실제 텍스트이고, `link`는 텍스트를 클릭할 때 이동할 링크입니다. 링크는 실제 파일의 경로를 `.md` 접두어 없이 설정하고 항상 `/`로 시작해야 합니다. `text`는 네비게이션 바에 표시되는 실제 텍스트이며, `link`는 텍스트를 클릭했을 때 이동할 링크입니다. 링크의 경로는 `.md` 접미사 없이 실제 파일 경로로 설정하며, 항상 `/`로 시작해야 합니다.
Nav 링크는 드롭다운 메뉴일 수도 있습니다. 이를 위해 링크 옵션에 `items` 키를 설정하세요. 네비게이션 바 링크는 드롭다운 메뉴가 될 수 있습니다. 이를 위해 `link` 옵션에 `items` 키를 설정합니다.
```js ```js
export default { export default {
@ -75,9 +75,9 @@ export default {
} }
``` ```
드롭다운 메뉴 제목(`위 예제에서의 드롭다운 메뉴`)은 드롭다운 대화상자를 열 버튼이 되므로 `link` 속성을 가질 수 없습니다. 드롭다운 메뉴의 제목(위 예제에서 `드롭다운 메뉴`)은 드롭다운 대화 상자를 여는 버튼이 되므로 `link` 프로퍼티를 가질 수 없습니다.
더 많은 중첩된 항목을 전달하여 드롭다운 메뉴 항목에 "섹션"을 추가할 수도 있습니다. 드롭다운 메뉴 아이템에 더 많은 중첩된 아이템을 전달하여 "섹션"을 추가할 수도 있습니다.
```js ```js
export default { export default {
@ -116,14 +116,14 @@ export default {
### 링크의 "active" 상태 커스터마이징 {#customize-link-s-active-state} ### 링크의 "active" 상태 커스터마이징 {#customize-link-s-active-state}
현재 페이지가 일치하는 경로에 있을 때 Nav 메뉴 항목이 강조 표시됩니다. 매치되길 원하는 경로를 커스터마이징하고 싶다면 문자열 값으로 `activeMatch` 속성과 정규식을 정의하세요. 네비게이션 바 메뉴 아이템은 현재 페이지가 매칭되는 경로에 있을 때 강조 표시됩니다. 매칭할 경로를 커스터마이징 하려면 `activeMatch` 프로퍼티에 정규식을 문자열 값으로 정의합니다.
```js ```js
export default { export default {
themeConfig: { themeConfig: {
nav: [ nav: [
// 사용자가 `/config/` 경로에 있을 때 // `/config/` 경로에 있을 때
// 이 링크는 활성 상태가 됩니다. // 이 링크는 활성화된 상태가 됩니다.
{ {
text: '가이드', text: '가이드',
link: '/guide', link: '/guide',
@ -135,22 +135,22 @@ export default {
``` ```
::: warning ::: warning
`activeMatch`는 정규식 문자열로 예상되지만, 문자열로 정의해야 합니다. 실제 RegExp 객체를 여기서 사용할 수 없는 이유는 빌드 시간 동안 직렬화가 가능하지 않기 때문입니다. `activeMatch`는 정규식이어야 하지만, 문자열로 정의해야 합니다. 실제 RegExp 객체를 사용할 수 없는 이유는 빌드하는 동안 직렬화할 수 없기 때문입니다.
::: :::
### 링크의 "target" 및 "rel" 속성 커스터마이즈 {#customize-link-s-target-and-rel-attributes} ### 링크의 "target" 및 "rel" 어트리뷰트 커스터마이징 {#customize-link-s-target-and-rel-attributes}
기본적으로 VitePress는 링크가 외부 링크인지에 따라 `target` 및 `rel` 속성을 자동으로 결정합니다. 하지만 원한다면 이들도 커스터마이징할 수 있습니다. 기본적으로 VitePress는 링크가 외부 링크인지 여부에 따라 `target`과 `rel` 어트리뷰트를 자동으로 결정합니다. 하지만 원한다면 이를 커스터마이징 할 수도 있습니다.
```js ```js
export default { export default {
themeConfig: { themeConfig: {
nav: [ nav: [
{ {
text: '상품', text: 'GitHub 쇼핑몰',
link: 'https://www.thegithubshop.com/', link: 'https://www.thegithubshop.com/',
target: '_self', target: '_self',
rel: 'sponsored' rel: 'sponsored' // https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links
} }
] ]
} }
@ -159,11 +159,11 @@ export default {
## 소셜 링크 {#social-links} ## 소셜 링크 {#social-links}
[`socialLinks`](./default-theme-config#sociallinks)를 참조하세요. [`socialLinks`](./default-theme-config#sociallinks)를 참고하세요.
## 사용자 정의 구성 요소 {#custom-components} ## 커스텀 컴포넌트 {#custom-components}
`component` 옵션을 사용하여 탐색 모음에 사용자 정의 구성 요소를 포함할 수 있습니다. `component` 키는 Vue 구성 요소 이름이어야 하며, [Theme.enhanceApp](../guide/custom-theme#theme-interface)을 사용하여 전역으로 등록해야 합니다. 네비게이션 바에 커스텀 컴포넌트를 포함하려면 `component` 옵션을 사용하세요. `component` 키는 Vue 컴포넌트 이름이어야 하며, [Theme.enhanceApp](../guide/custom-theme#theme-interface)을 사용하여 전역적으로 등록해야 합니다.
```js ```js
// .vitepress/config.js // .vitepress/config.js
@ -175,7 +175,7 @@ export default {
items: [ items: [
{ {
component: 'MyCustomComponent', component: 'MyCustomComponent',
// 구성 요소에 전달할 선택적 props // 컴포넌트에 전달할 선택적 프로퍼티
props: { props: {
title: 'My Custom Component' title: 'My Custom Component'
} }
@ -190,7 +190,7 @@ export default {
} }
``` ```
그런 다음, 구성 요소를 전역으로 등록해야 합니다: 그런 다음, 컴포넌트를 전역적으로 등록해야 합니다:
```js ```js
// .vitepress/theme/index.js // .vitepress/theme/index.js
@ -209,8 +209,8 @@ export default {
} }
``` ```
구성 요소가 탐색 모음에 렌더링됩니다. VitePress는 구성 요소에 다음과 같은 추가 props를 제공합니다: 컴포넌트는 네비게이션 바에 렌더링될 것입니다. VitePress는 컴포넌트에 다음과 같은 추가 프로퍼티를 제공합니다:
- `screenMenu`: 구성 요소가 모바일 탐색 메뉴 내부에 있는지 여부를 나타내는 선택적 boolean 값 - `screenMenu`: 컴포넌트가 모바일 네비게이션 바 메뉴 내부에 있는지를 나타내는 선택적 boolean 값
예제는 [여기](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress)에서 확인할 수 있습니다. e2e 테스트 예제를 [여기](https://github.com/vuejs/vitepress/tree/main/__tests__/e2e/.vitepress)에서 확인할 수 있습니다.

@ -1,6 +1,6 @@
# 이전 다음 링크 {#prev-next-links} # 이전/다음 링크 {#prev-next-links}
이전 페이지와 다음 페이지에 대한 텍스트와 링크를 사용자 정의할 수 있습니다(문서 하단에 표시됨). 사이드바에 있는 텍스트와 다른 텍스트를 원하는 경우에 유용합니다. 또한, 하단부를 비활성화하거나 사이드바에 포함되지 않은 페이지로 링크하는 것이 유용할 수 있습니다. 문서 하단에 표시되는 이전 페이지와 다음 페이지의 텍스트와 링크를 커스터마이징 할 수 있습니다. 사이드바에 있는 텍스트와 다른 텍스트를 원할 경우 유용합니다. 또한 푸터를 비활성화하거나 사이드바에 포함되지 않은 페이지로 링크할 때도 유용할 수 있습니다.
## prev ## prev
@ -8,11 +8,11 @@
- 세부 사항: - 세부 사항:
이전 페이지로의 링크에 표시할 텍스트/링크를 지정합니다. frontmatter에서 이를 설정하지 않으면, 사이드바 구성에서 텍스트/링크를 추론합니다. 이전 페이지로 가는 링크에 표시할 텍스트/링크를 지정합니다. 전문에서 이 항목을 설정하지 않으면, 사이드바 구성에서 텍스트/링크가 유추됩니다.
- 예제: - 예제:
- 텍스트만 사용자 정의할 경우: - 텍스트만 커스터마이징하려면:
```yaml ```yaml
--- ---
@ -20,17 +20,17 @@
--- ---
``` ```
- 텍스트와 링크 모두 사용자 정의할 경우: - 텍스트와 링크를 모두 커스터마이즈하려면:
```yaml ```yaml
--- ---
prev: prev:
text: '마크다운' text: '마크다운 확장 기능'
link: '/guide/markdown' link: '/guide/markdown'
--- ---
``` ```
- 이전 페이지 숨기기: - 이전 페이지를 숨기려면:
```yaml ```yaml
--- ---
@ -40,4 +40,4 @@
## next ## next
`prev`와 동일하지만 다음 페이지에 대한 설정입니다. `prev`와 동일하지만, 다음 페이지에 대한 설정입니다.

@ -6,7 +6,7 @@ outline: deep
## 로컬 검색 {#local-search} ## 로컬 검색 {#local-search}
VitePress는 [minisearch](https://github.com/lucaong/minisearch/)를 통해 브라우저 내 인덱스를 사용한 퍼지 전문 검색을 지원합니다. 이 기능을 활성화하려면, `.vitepress/config.ts` 파일 내에서 `themeConfig.search.provider` 옵션을 `'local'`로 설정하면 됩니다: VitePress는 [minisearch](https://github.com/lucaong/minisearch/)로 브라우저 내 인덱스를 사용하는 퍼지(full-text) 검색을 지원합니다. 이 기능을 활성화하려면 `.vitepress/config.ts` 파일에서 `themeConfig.search.provider` 옵션을 `'local'`로 설정하면 됩니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -20,15 +20,15 @@ export default defineConfig({
}) })
``` ```
예시 결과: 예제 결과:
![검색 모달의 스크린샷](/search.png) ![검색 모달의 스크린샷](/search.png)
또는, [Algolia DocSearch](#algolia-search)나 <https://www.npmjs.com/package/vitepress-plugin-search>, <https://www.npmjs.com/package/vitepress-plugin-pagefind>과 같은 커뮤니티 플러그인을 사용할 수 있습니다. 대안으로 [Algolia DocSearch](#algolia-search), <https://www.npmjs.com/package/vitepress-plugin-search>, <https://www.npmjs.com/package/vitepress-plugin-pagefind>와 같은 커뮤니티 플러그인을 사용할 수도 있습니다.
### i18n {#local-search-i18n} ### i18n {#local-search-i18n}
다국어 검색을 사용하려면 다음과 같은 설정을 사용할 수 있습니다: 다국어 검색을 사용하려면 다음과 같은 구성을 사용해야 합니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -39,24 +39,24 @@ export default defineConfig({
provider: 'local', provider: 'local',
options: { options: {
locales: { locales: {
zh: { // 기본 로케일을 번역하려면 이것을 `root`로 만드십시오. ko: { // 기본 로케일을 번역하려면 이것을 `root`로 만드십시오.
translations: { translations: {
button: { button: {
buttonText: '搜索', buttonText: '검색',
buttonAriaLabel: '搜索' buttonAriaLabel: '검색'
}, },
modal: { modal: {
displayDetails: '显示详细列表', displayDetails: '상세 목록 표시',
resetButtonTitle: '重置搜索', resetButtonTitle: '검색 지우기',
backButtonTitle: '关闭搜索', backButtonTitle: '검색 닫기',
noResultsText: '没有结果', noResultsText: '결과를 찾을 수 없습니다',
footer: { footer: {
selectText: '选择', selectText: '선택',
selectKeyAriaLabel: '输入', selectKeyAriaLabel: '선택하기',
navigateText: '导航', navigateText: '탐색',
navigateUpKeyAriaLabel: '上箭头', navigateUpKeyAriaLabel: '위로',
navigateDownKeyAriaLabel: '下箭头', navigateDownKeyAriaLabel: '아래로',
closeText: '关闭', closeText: '닫기',
closeKeyAriaLabel: 'esc' closeKeyAriaLabel: 'esc'
} }
} }
@ -69,9 +69,9 @@ export default defineConfig({
}) })
``` ```
### miniSearch 옵션 {#mini-search-options} ### MiniSearch 옵션 {#mini-search-options}
다음과 같이 MiniSearch를 구성할 수 있습니다: MiniSearch를 다음과 같이 구성할 수 있습니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -103,11 +103,11 @@ export default defineConfig({
}) })
``` ```
[MiniSearch 문서](https://lucaong.github.io/minisearch/classes/MiniSearch.MiniSearch.html)에서 더 많은 정보를 얻을 수 있습니다. 더 자세한 내용은 [MiniSearch 문서](https://lucaong.github.io/minisearch/classes/MiniSearch.MiniSearch.html)를 참고하세요.
### 사용자 정의 콘텐츠 렌더러 {#custom-content-renderer} ### 커스텀 컨텐츠 렌더러 {#custom-content-renderer}
색인 생성 전에 마크다운 콘텐츠를 렌더링하는 데 사용되는 함수를 커스터마이즈할 수 있습니다: 마크다운 컨텐츠를 인덱싱하기 전에 렌더링하는 데 사용되는 함수를 커스터마이징할 수 있습니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -131,11 +131,11 @@ export default defineConfig({
}) })
``` ```
이 함수는 클라이언트 사이드 사이트 데이터에서 제거될 것이므로, 여기서 Node.js API를 사용할 수 있습니다. 이 함수는 클라이언트 사이드 사이트 데이터에서 제거되므로, Node.js API를 사용할 수 있습니다.
#### 예시: 검색에서 페이지 제외 {#example-excluding-pages-from-search} #### 예제: 검색에서 페이지 제외 {#example-excluding-pages-from-search}
페이지에서 `search: false`를 프론트매터에 추가하여 검색에서 페이지를 제외할 수 있습니다. 또는 다음과 같이 합니다: 페이지의 전문에 `search: false`를 추가하여 검색에서 해당 페이지를 제외할 수 있습니다. 또는:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -158,10 +158,10 @@ export default defineConfig({
``` ```
::: warning 참고 ::: warning 참고
사용자 정의 `_render` 함수를 제공하는 경우, `search: false` 프론트매터를 직접 처리해야 합니다. 또한, `md.render`가 호출되기 전에는 `env` 객체가 완전히 채워지지 않으므로, `frontmatter`와 같은 선택적 `env` 속성에 대한 검사는 그 이후에 수행해야 합니다. 커스텀 `_render` 함수가 제공된 경우, `search: false` 전문을 직접 처리해야 합니다. 또한, `md.render`가 호출되기 전에 `env` 객체가 완전히 채워지지 않으므로, `frontmatter`와 같은 선택적 `env` 프로퍼티에 대한 검사는 그 이후에 수행해야 합니다.
::: :::
#### 예시: 콘텐츠 변환 - 앵커 추가 {#example-transforming-content-adding-anchors} #### 예제: 콘텐츠 변환 - 앵커 추가 {#example-transforming-content-adding-anchors}
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -185,7 +185,7 @@ export default defineConfig({
## Algolia 검색 {#algolia-search} ## Algolia 검색 {#algolia-search}
VitePress는 [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch)를 사용하여 문서 사이트 검색을 지원합니다. 시작 가이드를 참조하세요. 작동하게 하려면 `.vitepress/config.ts`에서 최소한 다음 정보를 제공해야 합니다: VitePress는 [Algolia DocSearch](https://docsearch.algolia.com/docs/what-is-docsearch)를 사용한 문서 사이트 검색 기능을 지원합니다. 시작 가이드를 참고하세요. `.vitepress/config.ts`에서 이 기능을 사용하려면 최소한 다음 구성을 제공해야 합니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -206,7 +206,7 @@ export default defineConfig({
### i18n {#algolia-search-i18n} ### i18n {#algolia-search-i18n}
다국어 검색을 사용하려면 다음과 같은 설정을 사용할 수 있습니다: 다국어 검색을 사용하려면 다음과 같이 구성해야 합니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -220,43 +220,43 @@ export default defineConfig({
apiKey: '...', apiKey: '...',
indexName: '...', indexName: '...',
locales: { locales: {
zh: { ko: {
placeholder: '搜索文档', placeholder: '문서 검색',
translations: { translations: {
button: { button: {
buttonText: '搜索文档', buttonText: '검색',
buttonAriaLabel: '搜索文档' buttonAriaLabel: '검색'
}, },
modal: { modal: {
searchBox: { searchBox: {
resetButtonTitle: '清除查询条件', resetButtonTitle: '검색 지우기',
resetButtonAriaLabel: '清除查询条件', resetButtonAriaLabel: '검색 지우기',
cancelButtonText: '取消', cancelButtonText: '취소',
cancelButtonAriaLabel: '取消' cancelButtonAriaLabel: '취소'
}, },
startScreen: { startScreen: {
recentSearchesTitle: '搜索历史', recentSearchesTitle: '검색 기록',
noRecentSearchesText: '没有搜索历史', noRecentSearchesText: '최근 검색 없음',
saveRecentSearchButtonTitle: '保存至搜索历史', saveRecentSearchButtonTitle: '검색 기록에 저장',
removeRecentSearchButtonTitle: '从搜索历史中移除', removeRecentSearchButtonTitle: '검색 기록에서 삭제',
favoriteSearchesTitle: '收藏', favoriteSearchesTitle: '즐겨찾기',
removeFavoriteSearchButtonTitle: '从收藏中移除' removeFavoriteSearchButtonTitle: '즐겨찾기에서 삭제'
}, },
errorScreen: { errorScreen: {
titleText: '无法获取结果', titleText: '결과를 가져올 수 없습니다',
helpText: '你可能需要检查你的网络连接' helpText: '네트워크 연결을 확인하세요'
}, },
footer: { footer: {
selectText: '选择', selectText: '선택',
navigateText: '切换', navigateText: '탐색',
closeText: '关闭', closeText: '닫기',
searchByText: '搜索提供者' searchByText: '검색 기준'
}, },
noResultsScreen: { noResultsScreen: {
noResultsText: '无法找到相关结果', noResultsText: '결과를 찾을 수 없습니다',
suggestedQueryText: '你可以尝试查询', suggestedQueryText: '새로운 검색을 시도할 수 있습니다',
reportMissingResultsText: '你认为该查询应该有结果?', reportMissingResultsText: '해당 검색어에 대한 결과가 있어야 합니까?',
reportMissingResultsLinkText: '点击反馈' reportMissingResultsLinkText: '피드백 보내기 클릭'
} }
} }
} }
@ -268,11 +268,11 @@ export default defineConfig({
}) })
``` ```
[이 옵션들](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts)은 덮어쓸 수 있습니다. 공식 Algolia 문서에서 더 많은 정보를 알아보세요. [이 옵션들](https://github.com/vuejs/vitepress/blob/main/types/docsearch.d.ts)은 재작성 할 수 있습니다. 이에 대해 자세히 알고 싶다면 Algolia 공식 문서를 참고하세요.
### 크롤러 구성 {#crawler-config} ### 크롤러 구성 {#crawler-config}
이 사이트가 사용하는 것을 기반으로 한 예제 구성입니다: 이 사이트에서 사용하는 예제 구성을 소개합니다:
```ts ```ts
new Crawler({ new Crawler({
@ -285,7 +285,7 @@ new Crawler({
exclusionPatterns: [], exclusionPatterns: [],
ignoreCanonicalTo: false, ignoreCanonicalTo: false,
discoveryPatterns: ['https://vitepress.dev/**'], discoveryPatterns: ['https://vitepress.dev/**'],
schedule: '매주 토요일 05:10에', schedule: 'at 05:10 on Saturday',
actions: [ actions: [
{ {
indexName: 'vitepress', indexName: 'vitepress',
@ -297,7 +297,7 @@ new Crawler({
content: '.content p, .content li', content: '.content p, .content li',
lvl0: { lvl0: {
selectors: '', selectors: '',
defaultValue: '문서' defaultValue: 'Documentation'
}, },
lvl2: '.content h2', lvl2: '.content h2',
lvl3: '.content h3', lvl3: '.content h3',

@ -1,6 +1,6 @@
# 사이드바 {#sidebar} # 사이드바 {#sidebar}
사이드바는 문서의 주요 탐색 블록입니다. 사이드바 메뉴를 [`themeConfig.sidebar`](./default-theme-config#sidebar)에서 설정할 수 있습니다. 사이드바는 문서의 기본 탐색 블록입니다. [`themeConfig.sidebar`](./default-theme-config#sidebar)에서 사이드바 메뉴를 구성할 수 있습니다.
```js ```js
export default { export default {
@ -19,9 +19,9 @@ export default {
} }
``` ```
## 기초 {#the-basics} ## 기본 사용법 {#the-basics}
사이드바 메뉴의 가장 간단한 형태는 링크의 단일 배열을 전달하는 것입니다. 첫 번째 레벨 아이템은 사이드바의 "섹션"을 정의합니다. 해당 섹션의 제목인 `text`와 실제 탐색 링크인 `items`를 포함해야 합니다. 사이드바 메뉴의 가장 간단한 형태는 링크 배열을 전달하는 것입니다. 첫 번째 계층 아이템은 사이드바의 "섹션"을 정의합니다. 이 섹션에는 제목인 `text`와 실제 탐색 링크인 `items`가 포함되어야 합니다.
```js ```js
export default { export default {
@ -48,7 +48,7 @@ export default {
} }
``` ```
`link`는 `/`로 시작하는 실제 파일 경로를 지정해야 합니다. 링크 끝에 슬래시를 추가하면 해당 디렉토리의 `index.md`를 보여줍니다. 각 `link`는 `/`로 시작하는 실제 파일 경로를 지정해야 합니다. 링크 끝에 슬래시를 추가하면 해당 디렉터리의 `index.md`를 보여줍니다.
```js ```js
export default { export default {
@ -66,20 +66,20 @@ export default {
} }
``` ```
루트 레벨부터 시작해서 최대 6레벨 깊이까지 사이드바 아이템을 중첩할 수 있습니다. 6레벨 이상 중첩된 아이템은 무시되며 사이드바에 표시되지 않습니다. 사이드바 아이템을 루트 단계에서 최대 6단계까지 중첩할 수 있습니다. 6단계를 초과하는 중첩 아이템은 무시되며 사이드바에 표시되지 않습니다.
```js ```js
export default { export default {
themeConfig: { themeConfig: {
sidebar: [ sidebar: [
{ {
text: '레벨 1', text: '1단계',
items: [ items: [
{ {
text: '레벨 2', text: '2단계',
items: [ items: [
{ {
text: '레벨 3', text: '3단계',
items: [ items: [
... ...
] ]
@ -93,11 +93,11 @@ export default {
} }
``` ```
## 다중 사이드바 {#multiple-sidebars} ## 여러 사이드바 {#multiple-sidebars}
페이지 경로에 따라 다른 사이드바를 표시할 수 있습니다. 예를 들어, 이 사이트에 표시된 것과 같이 "가이드" 페이지와 "설정" 페이지와 같이 문서의 콘텐츠 섹션을 별도로 생성할 수 있습니다. 페이지 경로에 따라 다른 사이드바를 표시할 수 있습니다. 예를 들어 이 사이트처럼 문서의 각 섹션을 "가이드"와 "레퍼런스" 페이지에 따라 별도로 만들고 싶을 수 있습니다.
이를 위해 먼저 각 원하는 섹션에 대한 디렉토리로 페이지를 구성합니다: 이를 위해 먼저 각 섹션 디렉터리로 페이지를 구성합니다:
``` ```
. .
@ -111,32 +111,32 @@ export default {
└─ four.md └─ four.md
``` ```
그다음, 구성을 업데이트하여 각 섹션에 대한 사이드바를 정의합니다. 이때, 배열 대신 객체를 전달해야 합니다. 그런 다음 각 섹션에 대한 사이드바를 정의하도록 구성 파일을 업데이트합니다. 이런 경우에는 배열 대신 객체를 전달해야 합니다.
```js ```js
export default { export default {
themeConfig: { themeConfig: {
sidebar: { sidebar: {
// 이 사이드바는 사용자가 // 이 사이드바는 유저가
// `guide` 디렉토리에 있을 때 표시됩니다. // `guide` 디렉토리에 있을 때 표시됩니다.
'/guide/': [ '/guide/': [
{ {
text: '가이드', text: '가이드',
items: [ items: [
{ text: '인덱스', link: '/guide/' }, { text: '개요', link: '/guide/' },
{ text: '하나', link: '/guide/one' }, { text: '하나', link: '/guide/one' },
{ text: '둘', link: '/guide/two' } { text: '둘', link: '/guide/two' }
] ]
} }
], ],
// 이 사이드바는 사용자가 // 이 사이드바는 유저가
// `config` 디렉토리에 있을 때 표시됩니다. // `config` 디렉토리에 있을 때 표시됩니다.
'/config/': [ '/config/': [
{ {
text: '설정', text: '설정',
items: [ items: [
{ text: '인덱스', link: '/config/' }, { text: '개요', link: '/config/' },
{ text: '셋', link: '/config/three' }, { text: '셋', link: '/config/three' },
{ text: '넷', link: '/config/four' } { text: '넷', link: '/config/four' }
] ]
@ -149,7 +149,7 @@ export default {
## 접을 수 있는 사이드바 그룹 {#collapsible-sidebar-groups} ## 접을 수 있는 사이드바 그룹 {#collapsible-sidebar-groups}
사이드바 그룹에 `collapsed` 옵션을 추가하면 각 섹션을 숨기기/보이기 위한 토글 버튼이 나타납니다. 사이드바 그룹에 `collapsed` 옵션을 추가하면 각 섹션을 접거나 펼칠 수 있는 토글 버튼이 표시됩니다.
```js ```js
export default { export default {
@ -165,7 +165,7 @@ export default {
} }
``` ```
모든 섹션은 기본적으로 "열림" 상태입니다. 초기 페이지 로드 시 "닫힘" 상태로 하고 싶다면 `collapsed` 옵션을 `true`로 설정하세요. 모든 섹션은 기본적으로 "열림" 상태입니다. 초기 페이지 로드 시 "닫힘" 상태로 두려면 `collapsed` 옵션을 `true`로 설정합니다.
```js ```js
export default { export default {
@ -183,7 +183,7 @@ export default {
## `useSidebar` <Badge type="info" text="composable" /> ## `useSidebar` <Badge type="info" text="composable" />
사이드바 관련 데이터를 반환합니다. 반환된 객체는 다음과 같은 유형을 가집니다: 사이드바 관련 데이터를 반환합니다. 반환된 객체는 다음과 같은 타입을 가집니다:
```ts ```ts
export interface DocSidebar { export interface DocSidebar {

@ -5,7 +5,7 @@ const members = [
{ {
avatar: 'https://github.com/yyx990803.png', avatar: 'https://github.com/yyx990803.png',
name: 'Evan You', name: 'Evan You',
title: '창작자', title: 'Creator',
links: [ links: [
{ icon: 'github', link: 'https://github.com/yyx990803' }, { icon: 'github', link: 'https://github.com/yyx990803' },
{ icon: 'twitter', link: 'https://twitter.com/youyuxi' } { icon: 'twitter', link: 'https://twitter.com/youyuxi' }
@ -14,7 +14,7 @@ const members = [
{ {
avatar: 'https://github.com/kiaking.png', avatar: 'https://github.com/kiaking.png',
name: 'Kia King Ishii', name: 'Kia King Ishii',
title: '개발자', title: 'Developer',
links: [ links: [
{ icon: 'github', link: 'https://github.com/kiaking' }, { icon: 'github', link: 'https://github.com/kiaking' },
{ icon: 'twitter', link: 'https://twitter.com/KiaKing85' } { icon: 'twitter', link: 'https://twitter.com/KiaKing85' }
@ -25,11 +25,11 @@ const members = [
# 팀 페이지 {#team-page} # 팀 페이지 {#team-page}
팀을 소개하고 싶다면, 팀 페이지를 구성하기 위해 Team 컴포넌트를 사용할 수 있습니다. 이러한 컴포넌트를 사용하는 방법에는 두 가지가 있습니다. 하나는 문서 페이지에 포함시키는 것이고, 다른 하나는 전체 팀 페이지를 만드는 것입니다. 팀을 소개하고자 할 때, 팀 컴포넌트를 사용하여 팀 페이지를 구성할 수 있습니다. 이 컴포넌트를 사용하는 방법은 두 가지가 있습니다. 하나는 문서 페이지에 포함시키는 방법이고, 다른 하나는 전체 팀 페이지를 만드는 방법입니다.
## 페이지에서 팀 멤버 보여주기 {#show-team-members-in-a-page} ## 페이지에서 팀 구성원 보여주기 {#show-team-members-in-a-page}
`vitepress/theme`에서 제공되는 `<VPTeamMembers>` 컴포넌트를 사용하여 어떤 페이지에서든 팀 멤버 목록을 표시할 수 있습니다. `vitepress/theme`에서 제공되는 `<VPTeamMembers>` 컴포넌트를 사용하여, 어떤 페이지에서도 팀 구성원 목록을 표시할 수 있습니다.
```html ```html
<script setup> <script setup>
@ -39,7 +39,7 @@ const members = [
{ {
avatar: 'https://www.github.com/yyx990803.png', avatar: 'https://www.github.com/yyx990803.png',
name: 'Evan You', name: 'Evan You',
title: '창작자', title: 'Creator',
links: [ links: [
{ icon: 'github', link: 'https://github.com/yyx990803' }, { icon: 'github', link: 'https://github.com/yyx990803' },
{ icon: 'twitter', link: 'https://twitter.com/youyuxi' } { icon: 'twitter', link: 'https://twitter.com/youyuxi' }
@ -49,28 +49,28 @@ const members = [
] ]
</script> </script>
# 우리 팀 # Our Team
우리 훌륭한 팀을 만나보세요. Say hello to our awesome team.
<VPTeamMembers size="small" :members="members" /> <VPTeamMembers size="small" :members="members" />
``` ```
위 코드는 카드 형태의 요소로 팀 멤버를 표시합니다. 아래와 비슷하게 표시될 것입니다. 위 코드는 카드 형태의 엘리먼트로 팀 구성원을 표시합니다. 아래와 비슷한 형태로 표시됩니다.
<VPTeamMembers size="small" :members="members" /> <VPTeamMembers size="small" :members="members" />
`<VPTeamMembers>` 컴포넌트는 `small` 및 `medium`의 두 가지 다른 크기로 제공됩니다. 선호도에 달렸지만, 보통 문서 페이지에서 사용할 때는 `small` 크기가 더 잘 맞을 것입니다. 또한 "description"이나 "sponsor" 버튼을 추가하는 등 각 멤버에 대해 더 많은 속성을 추가할 수 있습니다. [`<VPTeamMembers>`](#vpteammembers)에서 더 자세히 알아보세요. `<VPTeamMembers>` 컴포넌트는 `small`과 `medium` 두 가지 크기로 제공됩니다. 개인의 선호도에 따라 선택할 수 있지만, 일반적으로 `small` 사이즈가 문서 페이지에 더 적합합니다. 또한, 각 구성원에 "설명"이나 "후원" 버튼과 같은 프로퍼티를 추가할 수도 있습니다. 자세한 내용은 [`<VPTeamMembers>`](#vpteammembers)에서 확인할 수 있습니다.
문서 페이지에 팀 멤버를 포함시키는 것은 전용 전체 팀 페이지를 만드는 것이 너무 과한 경우나, 문서 맥락을 참조로 일부 멤버를 소개할 때 좋습니다. 문서 페이지에 팀 구성원을 포함시키는 것은 전용 팀 페이지를 만드는 것이 과할 수 있는 소규모 팀이나, 문서의 맥락에 따라 일부 구성원을 소개할 때 좋습니다.
멤버 수가 많거나, 멤버를 보여주기 위해 더 많은 공간을 원한다면 [전체 팀 페이지 만들기](#create-a-full-team-page)를 고려해보세요. 만약 많은 수의 구성원이 있거나, 팀 구성원을 보여줄 더 많은 공간이 필요하다면, [전체 팀 페이지 만들기](#create-a-full-team-page)를 고려해 보세요.
## 전체 팀 페이지 만들기 {#create-a-full-team-page} ## 전체 팀 페이지 만들기 {#create-a-full-team-page}
문서 페이지에 팀 멤버를 추가하는 대신, 전체 팀 페이지를 만들 수도 있습니다. 사용자 지정 [홈 페이지](./default-theme-home-page)를 생성하는 방법과 유사합니다. 팀 구성원을 문서 페이지에 추가하는 대신, 전체 팀 페이지를 만들어 [홈 페이지](./default-theme-home-page)를 커스텀하는 것처럼 팀 페이지를 만들 수도 있습니다.
팀 페이지를 생성하려면 먼저, 새 md 파일을 만듭니다. 파일 이름은 중요하지 않지만, 여기서는 `team.md`라고 하겠습니다. 이 파일에서 frontmatter 옵션 `layout: page`를 설정한 다음, `TeamPage` 컴포넌트를 사용하여 페이지 구조를 구성합니다. 팀 페이지를 만들려면, 먼저 새로운 마크다운 파일을 생성하세요. 파일 이름은 중요하지 않지만, 여기서는 `team.md`라고 부르겠습니다. 이 파일에서 전문 옵션에 `layout: page`를 설정한 후, `TeamPage` 컴포넌트를 사용하여 페이지 구조를 구성합니다.
```html ```html
--- ---
@ -87,7 +87,7 @@ const members = [
{ {
avatar: 'https://www.github.com/yyx990803.png', avatar: 'https://www.github.com/yyx990803.png',
name: 'Evan You', name: 'Evan You',
title: '창작자', title: 'Creator',
links: [ links: [
{ icon: 'github', link: 'https://github.com/yyx990803' }, { icon: 'github', link: 'https://github.com/yyx990803' },
{ icon: 'twitter', link: 'https://twitter.com/youyuxi' } { icon: 'twitter', link: 'https://twitter.com/youyuxi' }
@ -100,11 +100,11 @@ const members = [
<VPTeamPage> <VPTeamPage>
<VPTeamPageTitle> <VPTeamPageTitle>
<template #title> <template #title>
우리 팀 Our Team
</template> </template>
<template #lead> <template #lead>
VitePress의 개발은 국제적인 The development of VitePress is guided by an international
팀에 의해 지도되며, 그 중 일부는 아래에 소개되어 있습니다. team, some of whom have chosen to be featured below.
</template> </template>
</VPTeamPageTitle> </VPTeamPageTitle>
<VPTeamMembers <VPTeamMembers
@ -113,17 +113,17 @@ const members = [
</VPTeamPage> </VPTeamPage>
``` ```
전체 팀 페이지를 생성할 때는 모든 컴포넌트를 `<VPTeamPage>` 컴포넌트로 감싸야 합니다. 이 컴포넌트는 공간 구조와 같은 적절한 레이아웃 구조를 팀 관련 컴포넌트에 적용할 것입니다. 전체 팀 페이지를 만들 때는 모든 컴포넌트를 `<VPTeamPage>` 컴포넌트로 감싸야 합니다. 이 컴포넌트는 중첩된 팀 관련 컴포넌트들이 적절한 레이아웃 구조와 간격을 갖도록 합니다.
`<VPPageTitle>` 컴포넌트는 페이지 제목 섹션을 추가합니다. 제목은 `<h1>` 헤딩입니다. 팀에 대해 문서화하려면 `#title`과 `#lead` 슬롯을 사용하십시오. `<VPPageTitle>` 컴포넌트는 페이지 제목 섹션을 추가합니다. 제목은 `<h1>` 헤딩으로 표시됩니다. `#title`과 `#lead` 슬롯을 사용하여 팀에 대한 설명을 작성할 수 있습니다.
`<VPMembers>`는 문서 페이지에서 사용할 때와 동일하게 작동합니다. 회원 목록을 표시합니다. `<VPMembers>` 컴포넌트는 문서 페이지에서 사용할 때와 동일하게 작동하며, 팀 구성원 목록을 표시합니다.
### 팀 멤버를 구분하기 위한 섹션 추가 {#add-sections-to-divide-team-members} ### 팀 구성원을 구분하기 위한 섹션 추가 {#add-sections-to-divide-team-members}
팀 페이지에 "섹션"을 추가할 수 있습니다. 예를 들어, 코어 팀 멤버와 커뮤니티 파트너와 같은 다양한 유형의 팀 멤버가 있을 수 있습니다. 이러한 멤버를 섹션으로 나누어 각 그룹의 역할을 더 잘 설명할 수 있습니다. 팀 페이지에 "섹션"을 추가할 수도 있습니다. 예를 들어, 핵심 팀 구성원과 커뮤니티 파트너와 같은 다양한 유형의 팀 구성원이 있을 수 있습니다. 이 구성원들을 섹션으로 나누어 각 그룹의 역할을 더 잘 설명할 수 있습니다.
이를 위해 이전에 만든 `team.md` 파일에 `<VPTeamPageSection>` 컴포넌트를 추가하십시오. 이를 위해 이전에 만든 `team.md` 파일에 `<VPTeamPageSection>` 컴포넌트를 추가하세요.
```html ```html
--- ---
@ -143,12 +143,12 @@ const partners = [...]
<VPTeamPage> <VPTeamPage>
<VPTeamPageTitle> <VPTeamPageTitle>
<template #title>우리 팀</template> <template #title>Our Team</template>
<template #lead>...</template> <template #lead>...</template>
</VPTeamPageTitle> </VPTeamPageTitle>
<VPTeamMembers size="medium" :members="coreMembers" /> <VPTeamMembers size="medium" :members="coreMembers" />
<VPTeamPageSection> <VPTeamPageSection>
<template #title>파트너</template> <template #title>Partners</template>
<template #lead>...</template> <template #lead>...</template>
<template #members> <template #members>
<VPTeamMembers size="small" :members="partners" /> <VPTeamMembers size="small" :members="partners" />
@ -157,13 +157,13 @@ const partners = [...]
</VPTeamPage> </VPTeamPage>
``` ```
`<VPTeamPageSection>` 컴포넌트는 `VPTeamPageTitle` 컴포넌트와 유사하게 `#title`과 `#lead` 슬롯을 가질 수 있으며, 팀 멤버를 표시하기 위한 `#members` 슬롯도 가질 수 있습니다. `<VPTeamPageSection>` 컴포넌트는 `VPTeamPageTitle` 컴포넌트처럼 `#title`과 `#lead` 슬롯을 가질 수 있으며, 팀 구성원을 표시하기 위한 `#members` 슬롯도 있습니다.
`#members` 슬롯 안에 `<VPTeamMembers>` 컴포넌트를 넣는 것을 잊지 마십시오. `#members` 슬롯 내부에는 `<VPTeamMembers>` 컴포넌트를 추가해야 합니다.
## `<VPTeamMembers>` ## `<VPTeamMembers>`
`<VPTeamMembers>` 컴포넌트는 주어진 멤버 목록을 표시합니다. `<VPTeamMembers>` 컴포넌트는 주어진 팀 구성원 목록을 표시합니다.
```html ```html
<VPTeamMembers <VPTeamMembers
@ -178,63 +178,63 @@ const partners = [...]
```ts ```ts
interface Props { interface Props {
// 각 회원의 크기입니다. 기본값은 `medium`입니다. // 각 구성원 사이즈. 기본값: `medium`
size?: 'small' | 'medium' size?: 'small' | 'medium'
// 표시할 회원 목록입니다. // 표시할 구성원 목록.
members: TeamMember[] members: TeamMember[]
} }
interface TeamMember { interface TeamMember {
// 회원의 아바타 이미지입니다. // 구성원 아바타 이미지.
avatar: string avatar: string
// 회원의 이름입니다. // 구성원 이름.
name: string name: string
// 회원 이름 아래에 표시될 직함입니다. // 구성원 이름 아래에 표시될 직함.
// 예: 개발자, 소프트웨어 엔지니어 등 // 예: 개발자, 소프트웨어 엔지니어 등
title?: string title?: string
// 회원이 속한 조직입니다. // 구성원이 속한 조직.
org?: string org?: string
// 조직의 URL입니다. // 조직의 URL.
orgLink?: string orgLink?: string
// 회원에 대한 설명입니다. // 구성원에 대한 설명.
desc?: string desc?: string
// 소셜 링크입니다. 예: GitHub, Twitter 등. // 소셜 링크. 예: GitHub, Twitter 등.
// 여기에 소셜 링크 객체를 전달할 수 있습니다. // 소셜 링크 객체를 전달해야 함.
// 참조: https://vitepress.dev/ko/reference/default-theme-config.html#sociallinks // 참고: https://vitepress.dev/ko/reference/default-theme-config.html#sociallinks
links?: SocialLink[] links?: SocialLink[]
// 회원의 후원 페이지 URL입니다. // 구성원의 후원 페이지 URL.
sponsor?: string sponsor?: string
// 후원 링크의 텍스트입니다. 기본값은 'Sponsor'입니다. // 후원 링크 텍스트. 기본값: 'Sponsor'
actionText?: string actionText?: string
} }
``` ```
## `<VPTeamPage>` ## `<VPTeamPage>`
전체 팀 페이지를 생성할 때 기본 컴포넌트입니다. 단일 슬롯만 허용합니다. 전달된 모든 팀 관련 컴포넌트에 적절한 스타일을 적용합니다. 전체 팀 페이지를 만들 때 사용하는 루트 컴포넌트입니다. 단일 슬롯만 허용하며, 전달된 모든 팀 관련 컴포넌트에 스타일을 적용합니다.
## `<VPTeamPageTitle>` ## `<VPTeamPageTitle>`
페이지의 "제목" 섹션을 추가합니다. `<VPTeamPage>` 아래에서 맨 처음 사용하는 것이 가장 좋습니다. `#title`과 `#lead` 슬롯을 받습니다. 페이지의 "제목" 섹션을 추가합니다. `<VPTeamPage>` 아래 맨 처음에 사용하는 것이 가장 좋습니다. `#title`과 `#lead` 슬롯이 있습니다.
```html ```html
<VPTeamPage> <VPTeamPage>
<VPTeamPageTitle> <VPTeamPageTitle>
<template #title> <template #title>
우리 팀 Our Team
</template> </template>
<template #lead> <template #lead>
VitePress의 개발은 국제적인 The development of VitePress is guided by an international
팀에 의해 지도되며, 그 중 일부는 아래에 소개되어 있습니다. team, some of whom have chosen to be featured below.
</template> </template>
</VPTeamPageTitle> </VPTeamPageTitle>
</VPTeamPage> </VPTeamPage>
@ -242,13 +242,13 @@ interface TeamMember {
## `<VPTeamPageSection>` ## `<VPTeamPageSection>`
팀 페이지 내에 "섹션"을 생성합니다. `#title`, `#lead`, 그리고 `#members` 슬롯을 받습니다. `<VPTeamPage>` 안에 원하는 만큼 많은 섹션을 추가할 수 있습니다. 팀 페이지 내에서 "섹션"을 생성합니다. `#title`, `#lead`, `#members` 슬롯이 있습니다. `<VPTeamPage>` 안에 원하는 만큼 섹션을 추가할 수 있습니다.
```html ```html
<VPTeamPage> <VPTeamPage>
... ...
<VPTeamPageSection> <VPTeamPageSection>
<template #title>파트너</template> <template #title>Partners</template>
<template #lead>Lorem ipsum...</template> <template #lead>Lorem ipsum...</template>
<template #members> <template #members>
<VPTeamMembers :members="data" /> <VPTeamMembers :members="data" />

@ -2,20 +2,20 @@
outline: deep outline: deep
--- ---
# 프론트매터 구성 {#frontmatter-config} # 전문 구성 {#frontmatter-config}
프론트매터(머리말)는 페이지 기반 구성을 가능하게 합니다. 모든 마크다운 파일에서, 사이트 수준 또는 테마 수준의 구성 옵션을 재정의하기 위해 프론트매터 구성을 사용할 수 있습니다. 또한, 프론트매터에서만 정의할 수 있는 구성 옵션이 있습니다. 전문은 페이지 기반 구성을 가능하게 합니다. 각 마크다운 파일에서 전문 구성을 사용하여 사이트 수준 또는 테마 수준의 구성 옵션을 재정의할 수 있습니다. 또한, 전문에서만 정의할 수 있는 구성 옵션도 있습니다.
사용 예시: 사용 예:
```md ```md
--- ---
title: VitePress로 문서화 title: Docs with VitePress
editLink: true editLink: true
--- ---
``` ```
Vue 표현식에서 `$frontmatter` 전역을 통해 프론트매터 데이터에 접근할 수 있습니다: Vue 표현식에서 `$frontmatter` 전역 변수를 통해 전문 데이터에 접근할 수 있습니다:
```md ```md
{{ $frontmatter.title }} {{ $frontmatter.title }}
@ -23,9 +23,9 @@ Vue 표현식에서 `$frontmatter` 전역을 통해 프론트매터 데이터에
## title ## title
- 유형: `string` - 타입: `string`
페이지의 제목입니다. [config.title](./site-config#title)과 동일하며, 사이트 수준의 구성을 재정의합니다. 페이지의 제목입니다. [config.title](./site-config#title)과 동일하며, 사이트 레벨의 구성을 재정의합니다.
```yaml ```yaml
--- ---
@ -35,22 +35,22 @@ title: VitePress
## titleTemplate ## titleTemplate
- 유형: `string | boolean` - 타입: `string | boolean`
제목의 접미사입니다. [config.titleTemplate](./site-config#titletemplate)와 동일하며, 사이트 수준의 구성을 재정의합니다. 제목의 접미사입니다. [config.titleTemplate](./site-config#titletemplate)와 동일하며, 사이트 레벨의 구성을 재정의합니다.
```yaml ```yaml
--- ---
title: VitePress title: VitePress
titleTemplate: Vite & Vue로 구동되는 정적 사이트 생성기 titleTemplate: Vite & Vue powered static site generator
--- ---
``` ```
## description ## description
- 유형: `string` - 타입: `string`
페이지의 설명입니다. [config.description](./site-config#description)과 동일하며, 사이트 수준의 구성을 재정의합니다. 페이지의 설명입니다. [config.description](./site-config#description)과 동일하며, 사이트 레벨의 구성을 재정의합니다.
```yaml ```yaml
--- ---
@ -60,19 +60,19 @@ description: VitePress
## head ## head
- 유형: `HeadConfig[]` - 타입: `HeadConfig[]`
현재 페이지에 삽입할 추가 head 태그를 지정합니다. 사이트 수준 구성에 의해 삽입된 head 태그들 이후에 추가됩니다. 현재 페이지에 삽입할 추가 head 태그를 지정합니다. 사이트 수준 구성에 의해 삽입된 head 태그 뒤에 추가됩니다.
```yaml ```yaml
--- ---
head: head:
- - meta - - meta
- name: description - name: description
content: 안녕하세요 content: hello
- - meta - - meta
- name: keywords - name: keywords
content: 슈퍼 두퍼 SEO content: super duper SEO
--- ---
``` ```
@ -84,18 +84,18 @@ type HeadConfig =
## 기본 테마 전용 {#default-theme-only} ## 기본 테마 전용 {#default-theme-only}
다음 프론트매터 옵션은 기본 테마를 사용할 때만 적용됩니다. 다음 전문 옵션은 기본 테마를 사용할 때만 적용됩니다.
### layout ### layout
- 유형: `doc | home | page` - 타입: `doc | home | page`
- 기본값: `doc` - 기본값: `doc`
페이지의 레이아웃을 결정합니다. 페이지의 레이아웃을 결정합니다.
- `doc` - 마크다운 콘텐츠에 기본 문서 스타일을 적용합니다. - `doc` - 마크다운 컨텐츠에 기본 문서 스타일을 적용합니다.
- `home` - "홈 페이지"를 위한 특별한 레이아웃입니다. `hero` 및 `features`와 같은 추가 옵션을 추가하여 아름다운 랜딩 페이지를 빠르게 만들 수 있습니다. - `home` - "홈 페이지"를 위한 특별 레이아웃입니다. 아름다운 랜딩 페이지를 빠르게 만들기 위해 `hero` 및 `features`와 같은 옵션을 추가할 수 있습니다.
- `page` - `doc`과 비슷하게 동작하지만 콘텐츠에 스타일을 적용하지 않습니다. 완전히 사용자 정의된 페이지를 만들고 싶을 때 유용합니다. - `page` - `doc`과 유사하게 작동하지만 콘텐츠에 스타일을 적용하지 않습니다. 완전히 커스텀 페이지를 만들 때 유용합니다.
```yaml ```yaml
--- ---
@ -105,18 +105,18 @@ layout: doc
### hero <Badge type="info" text="홈 페이지 전용" /> ### hero <Badge type="info" text="홈 페이지 전용" />
`layout`이 `home`으로 설정될 때 홈 히어로 섹션의 내용을 정의합니다. [기본 테마: 홈 페이지](./default-theme-home-page)에서 자세한 내용을 확인할 수 있습니다. `layout`이 `home`으로 설정된 경우, 홈 히어로 섹션의 내용을 정의합니다. 자세한 내용은 [기본 테마: 홈 페이지](./default-theme-home-page)에서 확인할 수 있습니다.
### features <Badge type="info" text="홈 페이지 전용" /> ### features <Badge type="info" text="홈 페이지 전용" />
`layout`이 `home`으로 설정될 때 기능 섹션에 표시할 항목을 정의합니다. [기본 테마: 홈 페이지](./default-theme-home-page)에서 자세한 내용을 확인할 수 있습니다. `layout`이 `home`으로 설정된 경우, 기능 섹션에 표시할 항목을 정의합니다. 자세한 내용은 [기본 테마: 홈 페이지](./default-theme-home-page)에서 확인할 수 있습니다.
### navbar ### navbar
- 유형: `boolean` - 타입: `boolean`
- 기본값: `true` - 기본값: `true`
[navbar](./default-theme-nav)를 표시할지 여부입니다. [네비게이션 바](./default-theme-nav)를 표시할지 여부를 설정합니다.
```yaml ```yaml
--- ---
@ -126,10 +126,10 @@ navbar: false
### sidebar ### sidebar
- 유형: `boolean` - 타입: `boolean`
- 기본값: `true` - 기본값: `true`
[sidebar](./default-theme-sidebar)를 표시할지 여부입니다. [사이드바](./default-theme-sidebar)를 표시할지 여부를 설정합니다.
```yaml ```yaml
--- ---
@ -139,14 +139,14 @@ sidebar: false
### aside ### aside
- 유형: `boolean | 'left'` - 타입: `boolean | 'left'`
- 기본값: `true` - 기본값: `true`
`doc` 레이아웃에서 aside 컴포넌트의 위치를 정의합니다. `doc` 레이아웃에서 어사이드(aside) 컴포넌트의 위치를 정의합니다.
이 값을 `false`로 설정하면 aside 컨테이너가 렌더링되지 않습니다.\ 이 값을 `false`로 설정하면 어사이드 컨테이너가 렌더링되지 않습니다.\
이 값을 `true`로 설정하면 aside가 오른쪽에 렌더링됩니다.\ 이 값을 `true`로 설정하면 어사이드를 오른쪽에 렌더링합니다.\
이 값을 `'left'`로 설정하면 aside가 왼쪽에 렌더링됩니다. 이 값을 `'left'`로 설정하면 어사이드를 왼쪽에 렌더링합니다.
```yaml ```yaml
--- ---
@ -156,17 +156,17 @@ aside: false
### outline ### outline
- 유형: `number | [number, number] | 'deep' | false` - 타입: `number | [number, number] | 'deep' | false`
- 기본값: `2` - 기본값: `2`
페이지에 표시할 개요의 헤더 레벨입니다. [config.themeConfig.outline.level](./default-theme-config#outline)과 동일하며, 사이트 수준 구성에서 설정한 값을 재정의합니다. 페이지에 표시할 아웃라인(개요) 헤더의 레벨을 설정합니다. [config.themeConfig.outline.level](./default-theme-config#outline)과 동일하며, 사이트 수준 구성에서 설정된 값을 재정의합니다.
### lastUpdated ### lastUpdated
- 유형: `boolean | Date` - 타입: `boolean | Date`
- 기본값: `true` - 기본값: `true`
현재 페이지의 바닥글에 [마지막 업데이트](./default-theme-last-updated) 텍스트를 표시할지 여부입니다. 날짜와 시간이 지정되면 마지막 git 수정 타임스탬프 대신 표시됩니다. 현재 페이지의 푸터에 [마지막 업데이트 날짜](./default-theme-last-updated) 텍스트를 표시할지 여부를 설정합니다. 날짜/시간이 지정되면 마지막 git 수정 타임스탬프 대신 해당 날짜/시간이 표시됩니다.
```yaml ```yaml
--- ---
@ -176,10 +176,10 @@ lastUpdated: false
### editLink ### editLink
- 유형: `boolean` - 타입: `boolean`
- 기본값: `true` - 기본값: `true`
현재 페이지의 바닥글에 [편집 링크](./default-theme-edit-link)를 표시할지 여부입니다. 현재 페이지의 푸터에 [편집 링크](./default-theme-edit-link)를 표시할지 여부를 설정합니다.
```yaml ```yaml
--- ---
@ -189,10 +189,10 @@ editLink: false
### footer ### footer
- 유형: `boolean` - 타입: `boolean`
- 기본값: `true` - 기본값: `true`
[footer](./default-theme-footer)를 표시할지 여부입니다. [푸터](./default-theme-footer)를 표시할지 여부를 설정합니다.
```yaml ```yaml
--- ---
@ -202,9 +202,9 @@ footer: false
### pageClass ### pageClass
- 유형: `string` - 타입: `string`
특정 페이지에 추가 클래스 이름을 추가합니다. 페이지에 추가할 클래스 입니다.
```yaml ```yaml
--- ---
@ -212,7 +212,7 @@ pageClass: custom-page-class
--- ---
``` ```
그런 다음 `.vitepress/theme/custom.css` 파일에서 이 특정 페이지의 스타일을 사용자 정의할 수 있습니다: 그런 다음 `.vitepress/theme/custom.css` 파일에서 이 페이지의 스타일을 커스텀 할 수 있습니다:
```css ```css
.custom-page-class { .custom-page-class {

@ -1,35 +1,35 @@
# 런타임 API {#runtime-api} # 런타임 API {#runtime-api}
VitePress는 앱 데이터에 액세스할 수 있도록 몇 가지 내장 API를 제공합니다. 또한 전역적으로 사용할 수 있는 몇 가지 내장 컴포넌트도 제공합니다. VitePress는 애플리케이션 데이터를 액세스할 수 있는 여러 내장 API를 제공합니다. 그리고 전역적으로 사용할 수 있는 몇 가지 내장 컴포넌트도 제공합니다.
도우미 메서드는 `vitepress`에서 전역적으로 가져올 수 있으며 일반적으로 사용자 지정 테마 Vue 컴포넌트에서 사용됩니다. 그러나 마크다운 파일이 Vue [단일 파일 컴포넌트](https://vuejs.org/guide/scaling-up/sfc.html)로 컴파일되기 때문에 `.md` 페이지 내에서도 사용할 수 있습니다. 헬퍼 메서드는 `vitepress`에서 전역적으로 사용할 수 있으며, 주로 커스텀 테마의 Vue 컴포넌트에서 사용됩니다. 또한 마크다운 파일이 Vue [단일 파일 컴포넌트](https://vuejs.org/guide/scaling-up/sfc.html)로 컴파일되기 때문에 `.md` 페이지 내에서도 사용할 수 있습니다.
`use*`로 시작하는 메서드는 `setup()` 또는 `<script setup>` 내에서만 사용할 수 있는 [Vue 3 구성 API](https://vuejs.org/guide/introduction.html#composition-api) 함수("컴퍼저블")임을 나타냅니다. `use*`로 시작하는 메서드는 [Vue 3 Composition API](https://vuejs.org/guide/introduction.html#composition-api) 함수("컴포저블")를 나타내며, 이는 `setup()` 또는 `<script setup>` 내부에서만 사용할 수 있습니다.
## `useData` <Badge type="info" text="컴퍼저블" /> ## `useData` <Badge type="info" text="컴포저블" />
페이지별 데이터를 반환합니다. 반환된 객체는 다음 유형을 가집니다: 페이지별 데이터를 반환합니다. 반환된 객체는 다음과 같은 타입을 가집니다:
```ts ```ts
interface VitePressData<T = any> { interface VitePressData<T = any> {
/** /**
* 사이트 수준 메타데이터 * 사이트 레벨 메타데이터
*/ */
site: Ref<SiteData<T>> site: Ref<SiteData<T>>
/** /**
* .vitepress/config.js에서의 themeConfig * .vitepress/config.js 의 themeConfig
*/ */
theme: Ref<T> theme: Ref<T>
/** /**
* 페이지 수준 메타데이터 * 페이지 레벨 메타데이터
*/ */
page: Ref<PageData> page: Ref<PageData>
/** /**
* 페이지 앞부분 메타데이터 * 페이지 전문 메타데이터
*/ */
frontmatter: Ref<PageData['frontmatter']> frontmatter: Ref<PageData['frontmatter']>
/** /**
* 동적 라우트 매개변수 * 동적 라우트 파라미터
*/ */
params: Ref<PageData['params']> params: Ref<PageData['params']>
title: Ref<string> title: Ref<string>
@ -58,7 +58,7 @@ interface PageData {
} }
``` ```
**예시:** **예제:**
```vue ```vue
<script setup> <script setup>
@ -72,9 +72,9 @@ const { theme } = useData()
</template> </template>
``` ```
## `useRoute` <Badge type="info" text="컴퍼저블" /> ## `useRoute` <Badge type="info" text="컴포저블" />
현재 라우트 객체를 다음 유형으로 반환합니다: 다음과 같은 타입으로 현재 라우트 객체를 반환합니다:
```ts ```ts
interface Route { interface Route {
@ -84,9 +84,9 @@ interface Route {
} }
``` ```
## `useRouter` <Badge type="info" text="컴퍼저블" /> ## `useRouter` <Badge type="info" text="컴포저블" />
다른 페이지로 프로그래밍 방식으로 이동할 수 있도록 VitePress 라우터 인스턴스를 반환합니다. 프로그래밍 방식으로 다른 페이지로 이동할 수 있도록 VitePress 라우터 인스턴스를 반환합니다.
```ts ```ts
interface Router { interface Router {
@ -95,38 +95,38 @@ interface Router {
*/ */
route: Route route: Route
/** /**
* 새 URL로 이동합니다. * 새 URL로 이동.
*/ */
go: (to?: string) => Promise<void> go: (to?: string) => Promise<void>
/** /**
* 라우트가 변경되기 전에 호출됩니다. 이동을 취소하려면 `false`를 반환하십시오. * 라우트가 변경되기 전에 호출. 탐색을 취소하려면 `false`를 반환.
*/ */
onBeforeRouteChange?: (to: string) => Awaitable<void | boolean> onBeforeRouteChange?: (to: string) => Awaitable<void | boolean>
/** /**
* 페이지 컴포넌트가 로드되기 전(히스토리 상태가 업데이트된 후)에 호출됩니다. * 페이지 컴포넌트가 로드되기 전(히스토리 상태가 업데이트된 후)에 호출.
* 이동을 취소하려면 `false`를 반환하십시오. * 탐색을 취소하려면 `false`를 반환.
*/ */
onBeforePageLoad?: (to: string) => Awaitable<void | boolean> onBeforePageLoad?: (to: string) => Awaitable<void | boolean>
/** /**
* 라우트가 변경된 후 호출됩니다. * 라우트가 변경된 후 호출.
*/ */
onAfterRouteChanged?: (to: string) => Awaitable<void> onAfterRouteChanged?: (to: string) => Awaitable<void>
} }
``` ```
## `withBase` <Badge type="info" text="도움" /> ## `withBase` <Badge type="info" text="헬퍼" />
- **타입**: `(path: string) => string` - **타입**: `(path: string) => string`
설정된 [`base`](./site-config#base)를 주어진 URL 경로에 추가합니다. [Base URL](../guide/asset-handling#base-url)도 참조하십시오. 구성된 [`base`](./site-config#base)를 지정된 URL 경로에 추가합니다. [Base URL](../guide/asset-handling#base-url)을 참고하세요.
## `<Content />` <Badge type="info" text="컴포넌트" /> ## `<Content />` <Badge type="info" text="컴포넌트" />
`<Content />` 컴포넌트는 렌더링된 마크다운 내용을 표시합니다. [자신만의 테마를 만들 때](../guide/custom-theme) 유용합니다. `<Content />` 컴포넌트는 렌더링된 마크다운 내용을 표시합니다. [커스텀 테마를 만들 때](../guide/custom-theme) 유용합니다.
```vue ```vue
<template> <template>
<h1>커스텀 레이아웃!</h1> <h1>Custom Layout!</h1>
<Content /> <Content />
</template> </template>
``` ```
@ -135,9 +135,9 @@ interface Router {
`<ClientOnly />` 컴포넌트는 클라이언트 측에서만 슬롯을 렌더링합니다. `<ClientOnly />` 컴포넌트는 클라이언트 측에서만 슬롯을 렌더링합니다.
VitePress 애플리케이션은 정적 빌드를 생성할 때 Node.js에서 서버 렌더링되므로, 모든 Vue 사용은 범용 코드 요구 사항에 부합해야 합니다. 간단히 말해서, beforeMount 또는 mounted 훅에서만 브라우저 / DOM API에 액세스하십시오. VitePress 애플리케이션은 정적 빌드를 생성할 때 Node.js에서 서버 렌더링되므로 모든 Vue 사용은 범용 코드 요구 사항을 준수해야 합니다. 간단히 말해서, 브라우저 / DOM API는 반드시 beforeMount 또는 mounted 훅에서만 접근해야 합니다.
SSR 친화적이지 않은 컴포넌트(예: 커스텀 지시문이 포함된 경우)를 사용하거나 시연하는 경우 해당 컴포넌트를 `ClientOnly` 컴포넌트 안에 포함시킬 수 있습니다. SSR 친화적이지 않은(예: 커스텀 디렉티브를 포함하는) 컴포넌트를 사용하는 경우, 이를 `ClientOnly` 컴포넌트 내부에 래핑할 수 있습니다.
```vue-html ```vue-html
<ClientOnly> <ClientOnly>
@ -145,15 +145,15 @@ SSR 친화적이지 않은 컴포넌트(예: 커스텀 지시문이 포함된
</ClientOnly> </ClientOnly>
``` ```
- 관련: [SSR 호환성](../guide/ssr-compat) - 참고: [SSR 호환성](../guide/ssr-compat)
## `$frontmatter` <Badge type="info" text="템플릿 전역" /> ## `$frontmatter` <Badge type="info" text="템플릿 전역" />
Vue 표현식에서 현재 페이지의 [앞부분 메타데이터](../guide/frontmatter)를 직접 액세스합니다. Vue 표현식에서 현재 페이지의 [전문](../guide/frontmatter) 데이터에 직접 접근합니다.
```md ```md
--- ---
title: 안녕하세요 title: Hello
--- ---
# {{ $frontmatter.title }} # {{ $frontmatter.title }}
@ -161,7 +161,7 @@ title: 안녕하세요
## `$params` <Badge type="info" text="템플릿 전역" /> ## `$params` <Badge type="info" text="템플릿 전역" />
Vue 표현식에서 현재 페이지의 [동적 라우트 매개변수](../guide/routing#dynamic-routes)를 직접 액세스합니다. Vue 표현식에서 현재 페이지의 [동적 라우트 파라미터](../guide/routing#dynamic-routes)에 직접 접근합니다.
```md ```md
- package name: {{ $params.pkg }} - package name: {{ $params.pkg }}

@ -2,31 +2,31 @@
outline: deep outline: deep
--- ---
# 사이트 설정 {#site-config} # 사이트 구성 {#site-config}
사이트 설정은 사이트의 전역 설정을 정의할 수 있는 곳입니다. 앱 설정 옵션은 사용되는 테마에 상관없이 모든 VitePress 사이트에 적용되는 설정을 정의합니다. 예를 들어, 기본 디렉토리 또는 사이트의 제목 등이 있습니다. 사이트 구성(config)은 사이트의 전역 설정을 정의할 수 있는 곳입니다. 애플리케이션 구성 옵션은 사용 중인 테마와 상관없이 모든 VitePress 사이트에 적용되는 설정을 정의합니다. 예를 들어 기본 디렉터리나 사이트의 제목 등이 있습니다.
## 개요 {#overview} ## 개요 {#overview}
### 설정 해석 {#config-resolution} ### 구성 분석 {#config-resolution}
설정 파일은 항상 `<root>/.vitepress/config.[ext]`에서 해석되며, 여기서 `<root>`는 여러분의 VitePress [프로젝트 루트](../guide/routing#root-and-source-directory), 그리고 `[ext]`는 지원되는 파일 확장명 중 하나입니다. TypeScript는 기본적으로 지원됩니다. 지원되는 확장명에는 `.js`, `.ts`, `.mjs`, 그리고 `.mts`가 포함됩니다. 구성 파일은 항상 `<root>/.vitepress/config.[ext]`에서 처리됩니다. 여기서 `<root>`는 VitePress [프로젝트 루트](../guide/routing#root-and-source-directory)를 의미하며, `[ext]`는 지원되는 파일 확장자 중 하나입니다. TypeScript는 기본적으로 지원됩니다. 지원되는 확장자에는 `.js`, `.ts`, `.mjs`, `.mts`가 포함됩니다.
설정 파일에서는 ES 모듈 문법의 사용을 권장합니다. 설정 파일은 객체를 기본 내보내기해야 합니다: 구성 파일에서는 ES 모듈 구문을 사용하는 것이 권장됩니다. 구성 파일은 객체를 "default export"해야 합니다:
```ts ```ts
export default { export default {
// 앱 레벨 설정 옵션 // 애플리케이션 레벨의 구성 옵션
lang: 'en-US', lang: 'en-US',
title: 'VitePress', title: 'VitePress',
description: 'Vite & Vue를 활용한 정적 사이트 생성기.', description: 'Vite & Vue powered static site generator.',
... ...
} }
``` ```
::: details 동적(비동기) 설정 ::: details 동적(비동기) 구성
동적으로 설정을 생성해야 하는 경우, 함수를 기본 내보내기로 사용할 수도 있습니다. 예를 들면: 구성을 동적으로 생성해야 하는 경우, 함수를 "default export" 할 수 있습니다. 예:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -35,12 +35,12 @@ export default async () => {
const posts = await (await fetch('https://my-cms.com/blog-posts')).json() const posts = await (await fetch('https://my-cms.com/blog-posts')).json()
return defineConfig({ return defineConfig({
// 앱 레벨 설정 옵션 // 애플리케이션 레벨의 구성 옵션
lang: 'en-US', lang: 'en-US',
title: 'VitePress', title: 'VitePress',
description: 'Vite & Vue를 활용한 정적 사이트 생성기.', description: 'Vite & Vue powered static site generator.',
// 테마 레벨 설정 옵션 // 테마 레벨의 구성 옵션
themeConfig: { themeConfig: {
sidebar: [ sidebar: [
...posts.map((post) => ({ ...posts.map((post) => ({
@ -53,7 +53,7 @@ export default async () => {
} }
``` ```
예를 들어 상위 수준의 `await`도 사용할 수 있습니다: 최상위 수준의 `await`도 사용할 수 있습니다. 예:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -80,9 +80,9 @@ export default defineConfig({
::: :::
### 설정 옵션에 대한 인텔리센스 {#config-intellisense} ### 구성 인텔리센스 {#config-intellisense}
`defineConfig` 헬퍼를 사용하면 설정 옵션에 대해 TypeScript로 제공되는 인텔리센스를 활용할 수 있습니다. 여러분의 IDE가 지원한다면, JavaScript와 TypeScript 모두에서 작동할 것입니다. `defineConfig` 헬퍼를 사용하면 구성 옵션에 대해 TypeScript 기반의 인텔리센스(자동완성)를 제공받을 수 있습니다. IDE가 이를 지원하는 경우, JavaScript와 TypeScript 모두에서 작동합니다.
```js ```js
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
@ -92,21 +92,21 @@ export default defineConfig({
}) })
``` ```
### 타입이 지정된 테마 설정 {#typed-theme-config} ### 타입이 지정된 테마 구성 {#typed-theme-config}
기본적으로, `defineConfig` 헬퍼는 기본 테마에서 테마 설정 유형을 예상합니다: 기본적으로 `defineConfig` 헬퍼는 기본 테마에서 테마 구성 타입을 예측합니다:
```ts ```ts
import { defineConfig } from 'vitepress' import { defineConfig } from 'vitepress'
export default defineConfig({ export default defineConfig({
themeConfig: { themeConfig: {
// 유형은 `DefaultTheme.Config` // 타입은 `DefaultTheme.Config`
} }
}) })
``` ```
커스텀 테마를 사용하고 테마 설정에 대한 타입 검사를 원한다면, 대신 `defineConfigWithTheme`을 사용해야 하며, 일반 인수를 통해 귀하의 커스텀 테마에 대한 설정 유형을 전달해야 합니다: 커스텀 테마를 사용하고 테마 구성에 대한 타입 검사를 원한다면, `defineConfigWithTheme`를 사용하고 제네릭 인수를 통해 커스텀 테마의 구성 타입을 전달해야 합니다:
```ts ```ts
import { defineConfigWithTheme } from 'vitepress' import { defineConfigWithTheme } from 'vitepress'
@ -114,102 +114,102 @@ import type { ThemeConfig } from 'your-theme'
export default defineConfigWithTheme<ThemeConfig>({ export default defineConfigWithTheme<ThemeConfig>({
themeConfig: { themeConfig: {
// 유형은 `ThemeConfig` // 타입은 `ThemeConfig`
} }
}) })
``` ```
### Vite, Vue & Markdown 설정 {#vite-vue-markdown-config} ### Vite, Vue, Markdown 설정 {#vite-vue-markdown-config}
- **Vite** - **Vite**
여러분은 VitePress 설정에서 [vite](#vite) 옵션을 사용하여 기본 Vite 인스턴스를 구성할 수 있습니다. 별도의 Vite 설정 파일을 만들 필요는 없습니다. VitePress 구성에서 [vite](#vite) 옵션을 사용하여 기본 Vite 인스턴스를 구성할 수 있습니다. 별도의 Vite 구성 파일을 만들 필요는 없습니다.
- **Vue** - **Vue**
VitePress는 이미 Vite용 공식 Vue 플러그인([@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue))을 포함하고 있습니다. VitePress 설정에서 [vue](#vue) 옵션을 사용하여 그 옵션을 구성할 수 있습니다. VitePress는 이미 Vite의 공식 Vue 플러그인([@vitejs/plugin-vue](https://github.com/vitejs/vite-plugin-vue))을 포함하고 있습니다. VitePress 구성에서 [vue](#vue) 옵션을 사용하여 해당 옵션을 구성할 수 있습니다.
- **Markdown** - **Markdown**
[Markdown-It](https://github.com/markdown-it/markdown-it) 인스턴스를 VitePress 설정에서 [markdown](#markdown) 옵션을 사용하여 구성할 수 있습니다. [Markdown-It](https://github.com/markdown-it/markdown-it) 인스턴스를 VitePress 구성에서 [markdown](#markdown) 옵션을 사용하여 구성할 수 있습니다.
## 사이트 메타데이터 {#site-metadata} ## 사이트 메타데이터 {#site-metadata}
### title ### title
- 유형: `string` - 타입: `string`
- 기본값: `VitePress` - 기본값: `VitePress`
- 페이지별로 [frontmatter](./frontmatter-config#title)를 통해 재정의 가능 - [전문](./frontmatter-config#title)을 통해 페이지별로 재정의 가능
사이트의 제목입니다. 기본 테마를 사용할 경우, 이것은 내비게이션 바에 표시됩니다. 사이트의 제목입니다. 기본 테마를 사용할 경우, 이는 내비게이션 바에 표시됩니다.
전체 페이지 제목에 기본 접미사로도 사용됩니다. 그렇지 않으면 [`titleTemplate`](#titletemplate)이 정의되어 있습니다. 개별 페이지의 최종 제목은 첫 번째 `<h1>` 헤더의 텍스트 내용과 전역 `title`을 접미사로 결합한 것입니다. 예를 들어 다음과 같은 설정과 페이지 내용을 가진 경우: [`titleTemplate`](#titletemplate)이 정의되지 않은 경우, 모든 개별 페이지 제목의 기본 접미사로 사용됩니다. 개별 페이지의 최종 제목은 첫 번째 `<h1>` 헤더의 텍스트 콘텐츠와 전역 `title`을 접미사로 결합한 것입니다. 예를 들어 다음 구성과 페이지 콘텐츠가 있을 경우:
```ts ```ts
export default { export default {
title: '나의 멋진 사이트' title: 'My Awesome Site'
} }
``` ```
```md ```md
# 안녕하세요 # Hello
``` ```
페이지의 제목은 `안녕하세요 | 나의 멋진 사이트`가 될 것입니다. 페이지의 제목은 `Hello | My Awesome Site`가 됩니다.
### titleTemplate ### titleTemplate
- 유형: `string | boolean` - 타입: `string | boolean`
- 페이지별로 [frontmatter](./frontmatter-config#titletemplate)를 통해 재정의 가능 - [전문](./frontmatter-config#titletemplate)을 통해 페이지별로 재정의 가능
각 페이지의 제목 접미사 또는 전체 제목을 사용자 정의할 수 있습니다. 예를 들면: 각 페이지의 제목 접미사 또는 전체 제목을 커스터마이징할 수 있습니다. 예를 들어:
```ts ```ts
export default { export default {
title: '나의 멋진 사이트', title: 'My Awesome Site',
titleTemplate: '커스텀 접미사' titleTemplate: 'Custom Suffix'
} }
``` ```
```md ```md
# 안녕하세요 # Hello
``` ```
페이지의 제목은 `안녕하세요 | 커스텀 접미사`가 될 것입니다. 페이지의 제목은 `Hello | Custom Suffix`가 됩니다.
`:title` 기호를 `titleTemplate`에 사용하여 제목이 어떻게 렌더링될지 완전히 사용자 정의할 수 있습니다: 제목이 렌더링되는 방식을 완전히 커스터마이징하려면 `titleTemplate`에서 `:title` 심볼을 사용할 수 있습니다:
```ts ```ts
export default { export default {
titleTemplate: ':title - 커스텀 접미사' titleTemplate: ':title - Custom Suffix'
} }
``` ```
이 경우 `:title`은 페이지의 첫 번째 `<h1>` 헤더에서 추론된 텍스트로 대체됩니다. 이전 예제 페이지의 제목은 `안녕하세요 - 커스텀 접미사`가 될 것입니다. 여기서 `:title`은 페이지의 첫 번째 `<h1>` 헤더에서 추론된 텍스트로 대체됩니다. 이전 예제 페이지의 제목은 `Hello - Custom Suffix`가 됩니다.
이 옵션은 `false`로 설정하여 제목 접미사를 비활성화할 수 있습니다. 이 옵션을 `false`로 설정하여 제목 접미사를 비활성화할 수 있습니다.
### description ### description
- 유형: `string` - 타입: `string`
- 기본값: `VitePress 사이트` - 기본값: `A VitePress site`
- 페이지별로 [frontmatter](./frontmatter-config#description)를 통해 재정의 가능 - [전문](./frontmatter-config#description)을 통해 페이지별로 재정의 가능
사이트에 대한 설명입니다. 이것은 페이지 HTML의 `<meta>` 태그로 렌더링됩니다. 사이트의 설명입니다. 이는 페이지 HTML의 `<meta>` 태그로 렌더링됩니다.
```ts ```ts
export default { export default {
description: 'VitePress 사이트' description: 'A VitePress site'
} }
``` ```
### head ### head
- 유형: `HeadConfig[]` - 타입: `HeadConfig[]`
- 기본값: `[]` - 기본값: `[]`
- 페이지별로 [frontmatter](./frontmatter-config#head)를 통해 추가 가능 - [전문](./frontmatter-config#head)을 통해 페이지별로 추가 가능
페이지 HTML의 `<head>` 태그에 렌더링할 추가 요소들입니다. 사용자가 추가한 태그는 VitePress 태그 뒤, `head` 태그가 닫히기 전에 렌더링됩니다. 페이지 HTML의 `<head>` 태그에 렌더링할 추가 엘리먼트입니다. 추가한 태그는 VitePress 태그 뒤 ~ 닫는 `head` 태그 앞에 렌더링됩니다.
```ts ```ts
type HeadConfig = type HeadConfig =
@ -222,14 +222,14 @@ type HeadConfig =
```ts ```ts
export default { export default {
head: [['link', { rel: 'icon', href: '/favicon.ico' }]] head: [['link', { rel: 'icon', href: '/favicon.ico' }]]
} // base가 설정된 경우, /base/favicon.ico를 사용하세요 } // favicon.ico를 public 디렉토리에 배치하거나 base가 설정된 경우,
// /base/favicon.ico를 사용하세요.
/* 다음을 렌더링할 것입니다: /* 다음과 같이 랜더링:
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="/favicon.ico">
*/ */
``` ```
#### 예제: Google Fonts 추가 {#example-adding-google-fonts} #### 예제: Google 폰트 추가 {#example-adding-google-fonts}
```ts ```ts
export default { export default {
@ -249,7 +249,7 @@ export default {
] ]
} }
/* 다음을 렌더링할 것입니다: /* 다음과 같이 랜더링:
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
@ -273,7 +273,7 @@ export default {
] ]
} }
/* 다음을 렌더링할 것입니다: /* 다음과 같이 랜더링:
<script id="register-sw"> <script id="register-sw">
;(() => { ;(() => {
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
@ -304,7 +304,7 @@ export default {
] ]
} }
/* 다음을 렌더링할 것입니다: /* 다음과 같이 랜더링:
<script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script> <script async src="https://www.googletagmanager.com/gtag/js?id=TAG_ID"></script>
<script> <script>
window.dataLayer = window.dataLayer || []; window.dataLayer = window.dataLayer || [];
@ -317,10 +317,10 @@ export default {
### lang ### lang
- 유형: `string` - 타입: `string`
- 기본값: `en-US` - 기본값: `en-US`
사이트의 lang 속성입니다. 이것은 페이지 HTML의 `<html lang="en-US">` 태그로 렌더링됩니다. 사이트의 언어 어트리뷰트입니다. 이는 페이지 HTML의 `<html lang="en-US">` 태그로 렌더링됩니다.
```ts ```ts
export default { export default {
@ -330,12 +330,12 @@ export default {
### base ### base
- 유형: `string` - 타입: `string`
- 기본값: `/` - 기본값: `/`
사이트가 배포될 기본 URL입니다. 여러분이 사이트를 GitHub 페이지와 같은 하위 경로에 배포할 계획이라면 이것을 설정해야 합니다. 예를 들어, 여러분의 사이트를 `https://foo.github.io/bar/`에 배포할 계획이라면 base를 `'/bar/'`로 설정해야 합니다. 항상 슬래시로 시작하고 끝나야 합니다. 사이트가 배포될 기본 URL입니다. 예를 들어 GitHub Pages와 같이 서브 경로에 사이트를 배포하려는 경우 이것을 설정해야 합니다. `https://foo.github.io/bar/` 에 사이트를 배포하려면 `'/bar/'`로 설정해야 합니다. 항상 슬래시로 시작하고 끝나야 합니다.
base는 자동으로 다른 옵션에서 /로 시작하는 모든 URL에 자동으로 추가되므로 한 번만 지정하면 됩니다. 이것은 다른 옵션에서 `/`로 시작하는 모든 URL에 자동으로 추가되므로, 한 번만 지정하면 됩니다.
```ts ```ts
export default { export default {
@ -347,20 +347,20 @@ export default {
### cleanUrls ### cleanUrls
- 유형: `boolean` - 타입: `boolean`
- 기본값: `false` - 기본값: `false`
`true`로 설정하면, VitePress는 URL에서 끝부분 `.html`을 제거합니다. 또한 [클린 URL 생성](../guide/routing#generating-clean-url)을 참조하세요. `true`로 설정하면 VitePress는 URL에서 `.html`을 제거합니다. [간결한 URL 생성](../guide/routing#generating-clean-url)을 참고하세요.
::: warning 서버 지원 필요 ::: warning 서버 지원 필요
이를 활성화하려면 호스팅 플랫폼에서 추가 구성이 필요할 수 있습니다. 작동하려면 서버가 `/foo.html`을 방문할 때 `/foo`를 **리디렉션 없이** 제공할 수 있어야 합니다. 이를 활성화하려면 호스팅 플랫폼에서 추가 구성이 필요할 수 있습니다. 서버가 `/foo`를 방문할 때 **리디렉션 없이** `/foo.html`을 제공할 수 있어야 합니다.
::: :::
### rewrites ### rewrites
- 유형: `Record<string, string>` - 타입: `Record<string, string>`
사용자 지정 디렉토리 &lt;-&gt; URL 매핑을 정의합니다. 자세한 내용은 [라우팅: 라우트 재작성](../guide/routing#route-rewrites)을 참조하십시오. 커스텀 디렉터리와 URL 매핑을 정의합니다. 자세한 내용은 [라우팅: 라우트 재작성](../guide/routing#route-rewrites)을 참고하세요.
```ts ```ts
export default { export default {
@ -374,10 +374,10 @@ export default {
### srcDir ### srcDir
- 유형: `string` - 타입: `string`
- 기본값: `.` - 기본값: `.`
프로젝트 루트에 대해 상대적인 마크다운 페이지가 저장되는 디렉토리입니다. 또한 [루트 및 소스 디렉토리](../guide/routing#root-and-source-directory)를 참조하십시오. 마크다운 페이지가 저장되는 디렉터리입니다. 프로젝트 루트에 상대적입니다. 또한 [루트와 소스 디렉터리](../guide/routing#root-and-source-directory)를 참고하세요.
```ts ```ts
export default { export default {
@ -387,10 +387,10 @@ export default {
### srcExclude ### srcExclude
- 유형: `string` - 타입: `string`
- 기본값: `undefined` - 기본값: `undefined`
소스 콘텐츠로 제외해야 하는 마크다운 파일을 일치시키는 [글로브 패턴](https://github.com/mrmlnc/fast-glob#pattern-syntax)입니다. 소스 컨텐츠에서 제외해야 하는 마크다운 파일을 매칭하기 위한 [glob 패턴](https://github.com/mrmlnc/fast-glob#pattern-syntax)입니다.
```ts ```ts
export default { export default {
@ -400,10 +400,10 @@ export default {
### outDir ### outDir
- 유형: `string` - 타입: `string`
- 기본값: `./.vitepress/dist` - 기본값: `./.vitepress/dist`
사이트의 빌드 출력 위치로, [프로젝트 루트](../guide/routing#root-and-source-directory)에 대해 상대적입니다. 사이트의 빌드 결과물 위치입니다. [프로젝트 루트](../guide/routing#root-and-source-directory)에 상대적입니다.
```ts ```ts
export default { export default {
@ -413,10 +413,10 @@ export default {
### assetsDir ### assetsDir
- 유형: `string` - 타입: `string`
- 기본값: `assets` - 기본값: `assets`
생성된 자산을 중첩할 디렉토리를 지정합니다. 경로는 [`outDir`](#outdir) 내부에 있어야 하며 이에 대해 상대적으로 해결됩니다. 생성된 에셋을 포함할 디렉터리를 지정합니다. 경로는 [`outDir`](#outdir) 내에 있어야 하며, 그것을 기준으로 처리됩니다.
```ts ```ts
export default { export default {
@ -426,10 +426,10 @@ export default {
### cacheDir ### cacheDir
- 유형: `string` - 타입: `string`
- 기본값: `./.vitepress/cache` - 기본값: `./.vitepress/cache`
캐시 파일을 위한 디렉토리로, [프로젝트 루트](../guide/routing#root-and-source-directory)에 대해 상대적입니다. 또한: [cacheDir](https://vitejs.dev/config/shared-options.html#cachedir)을 참조하세요. 캐시 파일을 위한 디렉터리입니다. [프로젝트 루트](../guide/routing#root-and-source-directory)에 상대적입니다. [cacheDir](https://vitejs.dev/config/shared-options.html#cachedir)을 참고하세요.
```ts ```ts
export default { export default {
@ -439,12 +439,12 @@ export default {
### ignoreDeadLinks ### ignoreDeadLinks
- 유형: `boolean | 'localhostLinks' | (string | RegExp | ((link: string) => boolean))[]` - 타입: `boolean | 'localhostLinks' | (string | RegExp | ((link: string) => boolean))[]`
- 기본값: `false` - 기본값: `false`
`true`로 설정하면, VitePress는 죽은 링크로 인해 빌드가 실패하지 않습니다. `true`로 설정하면, 빌드 시 죽은 링크로 인해 실패하지 않습니다.
`'localhostLinks'`로 설정하면, 빌드가 죽은 링크로 실패하지만, `localhost` 링크는 확인하지 않습니다. `'localhostLinks'`로 설정하면, 죽은 링크가 있으면 빌드에 실패하지만 `localhost` 링크는 확인하지 않습니다.
```ts ```ts
export default { export default {
@ -452,18 +452,18 @@ export default {
} }
``` ```
정확한 url 문자열, 정규식 패턴, 또는 사용자 정의 필터 함수의 배열일 수도 있습니다. 정확히 일치하는 URL 문자열, 정규 표현식 패턴, 커스텀 필터 함수로 구성된 배열도 가능합니다.
```ts ```ts
export default { export default {
ignoreDeadLinks: [ ignoreDeadLinks: [
// 정확한 url "/playground"를 무시 // "/playground"과 정확히 일치하는 url 무시
'/playground', '/playground',
// 모든 localhost 링크 무시 // 모든 localhost 링크 무시
/^https?:\/\/localhost/, /^https?:\/\/localhost/,
// 모든 "/repl/" 포함 링크 무시 // 모든 "/repl/" 포함 링크 무시
/\/repl\//, /\/repl\//,
// 사용자 정의 함수, "ignore"를 포함한 모든 링크 무시 // 커스텀 함수, "ignore"를 포함한 모든 링크 무시
(url) => { (url) => {
return url.toLowerCase().includes('ignore') return url.toLowerCase().includes('ignore')
} }
@ -476,14 +476,14 @@ export default {
- 타입: `boolean` - 타입: `boolean`
- 기본값: `false` - 기본값: `false`
`true`로 설정하면, 초기 HTML에 인라인으로 포함되는 대신 별도의 JavaScript 청크로 페이지 메타데이터를 추출합니다. 이렇게 하면 각 페이지의 HTML 페이로드가 줄어들고 페이지 메타데이터 캐싱이 가능해져 사이트에 많은 페이지가 있을 때 서버 대역폭이 줄어듭니다. `true`로 설정하면 페이지 메타데이터를 초기 HTML에 인라인으로 삽입하는 대신 별도의 JavaScript 청크로 추출합니다. 이렇게 하면 각 페이지의 HTML 페이로드가 작아지고 페이지 메타데이터를 캐시할 수 있어, 사이트에 많은 페이지가 있을 때 서버 대역폭을 줄일 수 있습니다.
### mpa <Badge type="warning" text="실험적" /> ### mpa <Badge type="warning" text="실험적" />
- 타입: `boolean` - 타입: `boolean`
- 기본값: `false` - 기본값: `false`
`true`로 설정하면, 프로덕션 앱이 [MPA 모드](../guide/mpa-mode)로 빌드됩니다. MPA 모드는 기본적으로 0kb의 JavaScript를 제공하지만, 클라이언트 측 탐색을 비활성화하고 상호작용에 대해 명시적인 동의가 필요합니다. `true`로 설정하면 프로덕션 애플리케이션이 [MPA 모드](../guide/mpa-mode)로 빌드됩니다. MPA 모드는 기본적으로 0kb JavaScript를 제공하지만, 클라이언트 사이드 탐색을 비활성화하고 상호작용을 위한 명시적인 옵트인을 필요로 합니다.
## 테마 {#theming} ## 테마 {#theming}
@ -492,34 +492,34 @@ export default {
- 타입: `boolean | 'dark' | 'force-dark' | 'force-auto' | import('@vueuse/core').UseDarkOptions` - 타입: `boolean | 'dark' | 'force-dark' | 'force-auto' | import('@vueuse/core').UseDarkOptions`
- 기본값: `true` - 기본값: `true`
다크 모드(HTML 요소에 `.dark` 클래스 추가) 활성화 여부입니다. 다크 모드를 활성화 여부를 설정합니다 (`.dark` 클래스를 `<html>` 엘리먼트에 추가).
- 옵션이 `true`로 설정되면, 기본 테마는 사용자의 선호 색상 체계에 따라 결정됩니다. - `true`: 기본 테마는 유저의 선호 색상 설정에 따라 결정됩니다.
- 옵션이 `dark`로 설정되면, 테마는 기본적으로 다크 모드가 되며, 사용자가 수동으로 전환할 수 있습니다. - `dark`: 유저가 수동으로 변경하지 않는 한 기본 테마는 다크 모드가 됩니다.
- 옵션이 `false`로 설정되면, 사용자는 테마를 전환할 수 없습니다. - `false`: 유저는 테마를 전환할 수 없습니다.
- 옵션이 `'force-dark'`로 설정된 경우, 테마는 항상 어둡게 유지되며 사용자는 이를 변경할 수 없습니다. - `'force-dark'`: 테마는 항상 다크 모드가 되며 유저는 이를 전환할 수 없습니다.
- 옵션이 `'force-auto'`로 설정된 경우, 테마는 항상 사용자의 선호 색상에 의해 결정되며 사용자는 이를 변경할 수 없습니다. - `'force-auto'`: 테마는 항상 유저의 선호 색상 설정에 따라 결정되며 유저는 이를 전환할 수 없습니다.
이 옵션은 `vitepress-theme-appearance` 키를 사용하여 로컬 스토리지에서 사용자 설정을 복원하는 인라인 스크립트를 삽입합니다. 이는 페이지가 렌더링되기 전에 `.dark` 클래스가 적용되어 깜빡임을 방지합니다. 이 옵션은 `vitepress-theme-appearance` 키를 사용하여 로컬 스토리지에서 유저 설정을 복원하는 인라인 스크립트를 삽입합니다. 이는 페이지가 렌더링되기 전에 `.dark` 클래스가 적용되어 깜박임을 방지합니다.
`appearance.initialValue`는 `'dark' | undefined`만 가능합니다. Refs나 게터는 지원되지 않습니다. `appearance.initialValue`는 `'dark'` 또는 `undefined`만 가능합니다. Refs 또는 getter는 지원되지 않습니다.
### lastUpdated ### lastUpdated
- 타입: `boolean` - 타입: `boolean`
- 기본값: `false` - 기본값: `false`
Git을 사용하여 각 페이지의 마지막 업데이트 타임스탬프를 가져옵니다. 타임스탬프는 각 페이지의 페이지 데이터에 포함되며, [`useData`](./runtime-api#usedata)를 통해 접근할 수 있습니다. 각 페이지의 마지막 업데이트 타임스탬프를 Git을 사용하여 가져올지 여부를 설정합니다. 타임스탬프는 각 페이지의 페이지 데이터에 포함되며, [`useData`](./runtime-api#usedata)를 통해 접근할 수 있습니다.
기본 테마를 사용하는 경우, 이 옵션을 활성화하면 각 페이지의 마지막 업데이트 시간이 표시됩니다. [`themeConfig.lastUpdatedText`](./default-theme-config#lastupdatedtext) 옵션을 통해 텍스트를 사용자 정의할 수 있습니다. 기본 테마를 사용할 때, 이 옵션을 활성화하면 각 페이지의 마지막 업데이트 시간이 표시됩니다. [`themeConfig.lastUpdatedText`](./default-theme-config#lastupdatedtext) 옵션을 통해 텍스트를 커스터마이징할 수 있습니다.
## 사용자 정의 {#customization} ## 커스터마이징 {#customization}
### markdown ### markdown
- 타입: `MarkdownOption` - 타입: `MarkdownOption`
Markdown 파서 옵션을 구성합니다. VitePress는 파서로 [Markdown-it](https://github.com/markdown-it/markdown-it)를, 언어 구문을 강조하는 데 [Shiki](https://github.com/shikijs/shiki)를 사용합니다. 이 옵션 안에서 필요에 맞는 다양한 Markdown 관련 옵션을 전달할 수 있습니다. 마크다운 파서 옵션을 구성합니다. VitePress는 파서로 [Markdown-it](https://github.com/markdown-it/markdown-it)을 사용하고, 언어 구문 강조를 위해 [Shiki](https://github.com/shikijs/shiki)를 사용합니다. 이 옵션 내에서 다양한 마크다운 관련 옵션을 전달하여 필요에 맞게 조정할 수 있습니다.
```js ```js
export default { export default {
@ -527,18 +527,18 @@ export default {
} }
``` ```
모든 사용 가능한 옵션에 대해서는 [타입 선언과 jsdocs](https://github.com/vuejs/vitepress/blob/main/src/node/markdown/markdown.ts)를 확인하세요. 사용 가능한 모든 옵션에 대해서는 [타입 선언 및 jsdocs](https://github.com/vuejs/vitepress/blob/main/src/node/markdown/markdown.ts)를 참고하세요.
### vite ### vite
- 타입: `import('vite').UserConfig` - 타입: `import('vite').UserConfig`
내부 Vite 개발 서버/번들러에 직접 [Vite 설정](https://vitejs.dev/config/)을 전달합니다. 내부 Vite 개발 서버/번들러에 직접 [Vite 구성](https://vitejs.dev/config/)을 전달합니다.
```js ```js
export default { export default {
vite: { vite: {
// Vite 설정 옵션 // Vite 구성 옵션
} }
} }
``` ```
@ -547,7 +547,7 @@ export default {
- 타입: `import('@vitejs/plugin-vue').Options` - 타입: `import('@vitejs/plugin-vue').Options`
내부 플러그인 인스턴스에 [`@vitejs/plugin-vue` 옵션](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#options)을 직접 전달합니다. 내부 플러그인 인스턴스에 직접 [`@vitejs/plugin-vue` 옵션](https://github.com/vitejs/vite-plugin-vue/tree/main/packages/plugin-vue#options)을 전달합니다.
```js ```js
export default { export default {
@ -557,20 +557,20 @@ export default {
} }
``` ```
## 빌드 후크 {#build-hooks} ## 빌드 훅 {#build-hooks}
VitePress 빌드 후크는 웹사이트에 새로운 기능과 동작을 추가할 수 있습니다: VitePress 빌드 훅은 웹사이트에 새로운 기능과 동작을 추가할 수 있게 합니다:
- 사이트맵 - 사이트맵
- 검색 색인 작성 - 검색 인덱싱
- PWA - PWA
- Teleports - 텔레포트
### buildEnd ### buildEnd
- 타입: `(siteConfig: SiteConfig) => Awaitable<void>` - 타입: `(siteConfig: SiteConfig) => Awaitable<void>`
`buildEnd`는 빌드 CLI 후크로, 빌드(정적 사이트 생성, SSG) 완료 후 VitePress CLI 프로세스가 종료되기 전에 실행됩니다. `buildEnd`는 빌드 CLI 훅으로, 빌드(SSG)가 완료된 후 VitePress CLI 프로세스가 종료되기 전에 실행됩니다.
```ts ```ts
export default { export default {
@ -584,7 +584,7 @@ export default {
- 타입: `(context: SSGContext) => Awaitable<SSGContext | void>` - 타입: `(context: SSGContext) => Awaitable<SSGContext | void>`
`postRender`는 SSG 렌더링이 완료되었을 때 호출되는 빌드 후크입니다. SSG 중 Teleports 콘텐츠를 다루는 것을 허용합니다. `postRender`는 빌드 훅으로, SSG 렌더링이 완료되었을 때 호출됩니다. 이를 통해 SSG 동안 텔레포트 콘텐츠를 핸들링 할 수 있습니다.
```ts ```ts
export default { export default {
@ -606,10 +606,10 @@ interface SSGContext {
- 타입: `(context: TransformContext) => Awaitable<HeadConfig[]>` - 타입: `(context: TransformContext) => Awaitable<HeadConfig[]>`
`transformHead`는 각 페이지를 생성하기 전에 head를 변환하는 빌드 후크입니다. 정적으로 VitePress 설정에 추가할 수 없는 head 항목을 추가할 수 있습니다. 기존 항목과 자동으로 병합되므로 추가 항목만 반환하면 됩니다. `transformHead`는 각 페이지를 생성하기 전에 헤드를 변환하는 빌드 훅입니다. VitePress 구성에 정적으로 추가할 수 없는 헤드 항목을 추가할 수 있습니다. 기존 항목과 자동으로 병합되므로 추가 항목만 반환하면 됩니다.
::: warning ::: warning
`context` 내부에서 어떤 것도 변형하지 마세요. `context` 내부의 어떤 것도 변경하지 마세요.
::: :::
```ts ```ts
@ -622,8 +622,8 @@ export default {
```ts ```ts
interface TransformContext { interface TransformContext {
page: string // 예: index.md (srcDir에 대해 상대적) page: string // 예: index.md (srcDir에 상대적)
assets: string[] // 모든 비-js/css 자산을 전적으로 해결된 공개 URL로 assets: string[] // js/css가 아닌 모든 에셋을 완전히 처리된 public URL로 표시.
siteConfig: SiteConfig siteConfig: SiteConfig
siteData: SiteData siteData: SiteData
pageData: PageData pageData: PageData
@ -634,7 +634,7 @@ interface TransformContext {
} }
``` ```
이 후크는 웹사이트를 정적으로 생성할 때만 호출됩니다. 개발 중에는 호출되지 않습니다. 개발 중에 동적 head 항목을 추가해야 하는 경우, [`transformPageData`](#transformpagedata) 후크를 사용할 수 있습니다: 이 훅은 사이트를 정적으로 생성할 때만 호출됩니다. 개발 중에는 호출되지 않습니다. 개발 중에 동적 헤드 항목을 추가해야 하는 경우, [`transformPageData`](#transformpagedata) 훅을 대신 사용할 수 있습니다:
```ts ```ts
export default { export default {
@ -654,7 +654,7 @@ export default {
} }
``` ```
#### 예시: 정규 URL `<link>` 추가 {#example-adding-a-canonical-url-link} #### 예제: 표준 URL `<link>` 추가 {#example-adding-a-canonical-url-link}
```ts ```ts
export default { export default {
@ -676,10 +676,10 @@ export default {
- 타입: `(code: string, id: string, context: TransformContext) => Awaitable<string | void>` - 타입: `(code: string, id: string, context: TransformContext) => Awaitable<string | void>`
`transformHtml`는 디스크에 저장하기 전 각 페이지의 콘텐츠를 변환하는 빌드 훅입니다. `transformHtml`은 각 페이지의 내용을 디스크에 저장하기 전에 변환하는 빌드 훅입니다.
::: warning ::: warning
`context` 내에서는 어떠한 것도 변경하지 마세요. 또한, html 콘텐츠를 수정하는 것은 런타임에 수화 문제를 일으킬 수 있습니다. `context` 내부의 어떤 것도 변경하지 마세요. HTML 내용을 수정하면 런타임에 하이드레이션 문제가 발생할 수 있습니다.
::: :::
```ts ```ts
@ -694,10 +694,10 @@ export default {
- 타입: `(pageData: PageData, context: TransformPageContext) => Awaitable<Partial<PageData> | { [key: string]: any } | void>` - 타입: `(pageData: PageData, context: TransformPageContext) => Awaitable<Partial<PageData> | { [key: string]: any } | void>`
`transformPageData`는 각 페이지의 `pageData`를 변환하는 훅입니다. `pageData`를 직접 변경하거나 변경된 값들을 반환하여 페이지 데이터에 병합할 수 있습니다. `transformPageData`는 각 페이지의 `pageData`를 변환하는 훅입니다. `pageData`를 직접 변경하거나, 변경된 값을 반환하여 페이지 데이터에 병합할 수 있습니다.
::: warning ::: warning
`context` 내에서는 어떠한 것도 변경하지 마세요. 또한, 이 작업은 개발 서버의 성능에 영향을 줄 수 있으므로 주의하세요. 특히, 훅에서 네트워크 요청이나 이미지 생성과 같은 무거운 연산을 수행하는 경우에는 조건부 로직을 위해 `process.env.NODE_ENV === 'production'`를 확인할 수 있습니다. `context` 내부의 어떤 것도 변경하지 마세요. 이 훅에서 네트워크 요청이나 이미지 생성과 같은 무거운 연산이 있을 경우 개발 서버의 성능에 영향을 줄 수 있으니 주의하세요. 조건부 로직을 위해 `process.env.NODE_ENV === 'production'`을 확인할 수 있습니다.
::: :::
```ts ```ts

Loading…
Cancel
Save