@intlayer/docs 8.10.0-canary.0 → 8.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/ar/dictionary/markdown.md +409 -88
- package/docs/de/dictionary/markdown.md +279 -107
- package/docs/en/dictionary/markdown.md +237 -37
- package/docs/en-GB/dictionary/markdown.md +361 -76
- package/docs/es/dictionary/markdown.md +295 -123
- package/docs/fr/dictionary/markdown.md +301 -129
- package/docs/hi/dictionary/markdown.md +376 -90
- package/docs/id/dictionary/markdown.md +377 -91
- package/docs/it/dictionary/markdown.md +296 -129
- package/docs/ko/dictionary/markdown.md +306 -134
- package/docs/pl/dictionary/markdown.md +287 -116
- package/docs/pt/dictionary/markdown.md +287 -116
- package/docs/ru/dictionary/markdown.md +78 -513
- package/docs/tr/dictionary/markdown.md +300 -130
- package/docs/uk/dictionary/markdown.md +386 -100
- package/docs/vi/dictionary/markdown.md +383 -97
- package/docs/zh/dictionary/markdown.md +293 -125
- package/package.json +7 -7
- package/docs/ja/dictionary/markdown.md +0 -666
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
createdAt: 2025-02-07
|
|
3
3
|
updatedAt: 2026-05-19
|
|
4
4
|
title: Markdown
|
|
5
|
-
description: Intlayer를 사용하여 다국어 웹사이트에서 Markdown 콘텐츠를 선언하고 사용하는 방법을 알아보세요. 이 온라인 문서의 단계를 따라
|
|
5
|
+
description: Intlayer를 사용하여 다국어 웹사이트에서 Markdown 콘텐츠를 선언하고 사용하는 방법을 알아보세요. 이 온라인 문서의 단계를 따라 Markdown을 프로젝트에 원활하게 통합하세요.
|
|
6
6
|
keywords:
|
|
7
7
|
- Markdown
|
|
8
|
-
-
|
|
9
|
-
-
|
|
8
|
+
- Internationalization
|
|
9
|
+
- Documentation
|
|
10
10
|
- Intlayer
|
|
11
11
|
- Next.js
|
|
12
12
|
- JavaScript
|
|
@@ -22,46 +22,46 @@ history:
|
|
|
22
22
|
changes: "`.content.md` 파일 지원 추가"
|
|
23
23
|
- version: 8.5.0
|
|
24
24
|
date: 2026-03-24
|
|
25
|
-
changes: "
|
|
25
|
+
changes: "`intlayerMarkdown` 플러그인 객체 추가; `app.use(installIntlayerMarkdown)` 대신 `app.use(intlayerMarkdown)` 사용"
|
|
26
26
|
- version: 8.5.0
|
|
27
27
|
date: 2026-03-24
|
|
28
|
-
changes: "{{framework}}-intlayer
|
|
28
|
+
changes: "가져오기를 `{{framework}}-intlayer`에서 `{{framework}}-intlayer/markdown`으로 이동"
|
|
29
29
|
- version: 8.0.0
|
|
30
30
|
date: 2026-01-22
|
|
31
31
|
changes: "MarkdownRenderer / useMarkdownRenderer / renderMarkdown 유틸리티 및 forceInline 옵션 추가"
|
|
32
32
|
- version: 8.0.0
|
|
33
33
|
date: 2026-01-18
|
|
34
|
-
changes: "
|
|
34
|
+
changes: "Markdown 콘텐츠의 자동 장식, MDX 및 SSR 지원"
|
|
35
35
|
- version: 5.5.10
|
|
36
36
|
date: 2025-06-29
|
|
37
|
-
changes: "
|
|
37
|
+
changes: "초기 기록 생성"
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
#
|
|
40
|
+
# Markdown / 서식 있는 텍스트 콘텐츠
|
|
41
41
|
|
|
42
|
-
Intlayer는
|
|
42
|
+
Intlayer는 Markdown 구문을 사용하여 정의된 서식 있는 텍스트 콘텐츠를 지원합니다. 이를 통해 블로그, 기사 등과 같이 서식이 풍부한 콘텐츠를 쉽게 작성하고 유지 관리할 수 있습니다.
|
|
43
43
|
|
|
44
|
-
##
|
|
44
|
+
## Markdown 콘텐츠 선언
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
`md` 함수를 사용하거나 (Markdown 구문이 포함된 경우) 단순한 문자열로 Markdown 콘텐츠를 선언할 수 있습니다.
|
|
47
47
|
|
|
48
48
|
<Tabs>
|
|
49
49
|
<Tab label=".content.md" value=".content.md">
|
|
50
|
-
버전 `8.10.0`부터 `.content.md`
|
|
50
|
+
버전 `8.10.0`부터 `.content.md` 파일에서 직접 Markdown 콘텐츠를 선언할 수 있습니다. Intlayer가 Markdown 콘텐츠를 자동으로 감지하고 구문 분석합니다.
|
|
51
51
|
|
|
52
|
-
```md fileName="markdown-file.
|
|
52
|
+
```md fileName="markdown-file.en.content.md"
|
|
53
53
|
---
|
|
54
54
|
key: my-markdown-content
|
|
55
|
-
description:
|
|
56
|
-
locale:
|
|
55
|
+
description: 내 콘텐츠
|
|
56
|
+
locale: en
|
|
57
57
|
---
|
|
58
58
|
|
|
59
|
-
#
|
|
59
|
+
# 내 콘텐츠
|
|
60
60
|
|
|
61
|
-
|
|
61
|
+
여기에 마크다운 콘텐츠 예시가 있습니다.
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
`locale`
|
|
64
|
+
`locale` 프런트매터 필드는 콘텐츠의 로캘을 정의하는 필드입니다. 선택 사항입니다. 제공되지 않으면 Intlayer는 기본 로캘을 사용하며, 특정 로캘에 대한 번역이 없을 때 대체 로캘로도 사용됩니다.
|
|
65
65
|
|
|
66
66
|
파일 구조 예시:
|
|
67
67
|
|
|
@@ -75,11 +75,11 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
75
75
|
└── markdown-file.es.content.md
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
[사전 정의](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ko/dictionary/content_file.md)에 정의된 속성을 프런트매터에 추가할 수 있습니다.
|
|
79
79
|
|
|
80
80
|
</Tab>
|
|
81
81
|
<Tab label="수동 래핑" value="manual-wrapping">
|
|
82
|
-
|
|
82
|
+
`md` 함수를 사용하여 Markdown 콘텐츠를 명시적으로 선언하세요. 이는 명백한 구문이 포함되어 있지 않더라도 문자열이 Markdown으로 처리되도록 하려는 경우에 유용합니다.
|
|
83
83
|
|
|
84
84
|
```typescript fileName="markdownDictionary.content.ts"
|
|
85
85
|
import { md, type Dictionary } from "intlayer";
|
|
@@ -87,7 +87,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
87
87
|
const markdownDictionary = {
|
|
88
88
|
key: "app",
|
|
89
89
|
content: {
|
|
90
|
-
myMarkdownContent: md("##
|
|
90
|
+
myMarkdownContent: md("## 내 제목 \n\nLorem Ipsum"),
|
|
91
91
|
},
|
|
92
92
|
} satisfies Dictionary;
|
|
93
93
|
|
|
@@ -95,33 +95,34 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
95
95
|
```
|
|
96
96
|
|
|
97
97
|
</Tab>
|
|
98
|
-
<Tab label="
|
|
99
|
-
|
|
98
|
+
<Tab label="외부 파일" value="external-files">
|
|
99
|
+
`file` 함수를 사용하여 `.md` 파일을 직접 가져옵니다.
|
|
100
100
|
|
|
101
101
|
```typescript fileName="markdownDictionary.content.ts"
|
|
102
|
+
import { md, file, t } from "intlayer";
|
|
103
|
+
|
|
102
104
|
export default {
|
|
103
105
|
key: "app",
|
|
104
|
-
contentAutoTransformation: true, // 마크다운 콘텐츠 자동 감지 활성화 - intlayer.config.ts에서 전역 설정 가능
|
|
105
106
|
content: {
|
|
106
|
-
|
|
107
|
+
content: t({
|
|
108
|
+
en: md(file("./myMarkdown.en.md")),
|
|
109
|
+
ko: md(file("./myMarkdown.ko.md")),
|
|
110
|
+
}),
|
|
107
111
|
},
|
|
108
112
|
};
|
|
109
113
|
```
|
|
110
114
|
|
|
111
115
|
</Tab>
|
|
112
|
-
<Tab label="외부 파일" value="external-files">
|
|
113
|
-
`file` 함수를 사용하여 `.md` 파일을 직접 가져옵니다.
|
|
114
116
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
<Tab label="자동 감지" value="automatic-detection">
|
|
118
|
+
문자열에 일반적인 Markdown 표시기(예: 제목, 목록, 링크 등)가 포함된 경우 Intlayer가 자동으로 이를 변환합니다.
|
|
117
119
|
|
|
120
|
+
```typescript fileName="markdownDictionary.content.ts"
|
|
118
121
|
export default {
|
|
119
122
|
key: "app",
|
|
123
|
+
contentAutoTransformation: true, // Markdown 콘텐츠의 자동 감지 활성화 - intlayer.config.ts에서 전역으로 설정할 수 있습니다
|
|
120
124
|
content: {
|
|
121
|
-
|
|
122
|
-
en: md(file("./myMarkdown.en.md")),
|
|
123
|
-
fr: md(file("./myMarkdown.fr.md")),
|
|
124
|
-
}),
|
|
125
|
+
myMarkdownContent: "## 내 제목 \n\nLorem Ipsum",
|
|
125
126
|
},
|
|
126
127
|
};
|
|
127
128
|
```
|
|
@@ -131,38 +132,74 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
131
132
|
|
|
132
133
|
---
|
|
133
134
|
|
|
134
|
-
##
|
|
135
|
+
## Markdown 렌더링
|
|
136
|
+
|
|
137
|
+
Intlayer는 Markdown을 렌더링하는 두 가지 독립적인 방법을 제공합니다:
|
|
138
|
+
|
|
139
|
+
1. **`useIntlayer`를 통한 방식**
|
|
140
|
+
— Intlayer는 프레임워크의 네이티브 출력(JSX, VNode, HTML 문자열)으로 `md` 노드를 자동으로 변환합니다.
|
|
141
|
+
- 프런트매터는 분석되어 `.metadata`로 노출됩니다. 렌더링은 두 가지 수준에서 재정의할 수 있습니다. `MarkdownProvider`(또는 프레임워크 동등 기능)를 통한 전역 설정과 `.use()`를 통한 노드별 로컬 설정입니다. 두 가지를 결합할 수 있으며, `.use()`가 `MarkdownProvider`보다 우선하고, `MarkdownProvider`가 기본값보다 우선합니다.
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
2. **도우미 유틸리티** — `<MarkdownRenderer />`, `useMarkdownRenderer()`, 및 `renderMarkdown()`은 **순수 Markdown 문자열만** 허용하는 독립 실행형 도구입니다. 이들은 `useIntlayer`와 독립적이며 반환되는 장식된 노드와 작동하지 않습니다.
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
Markdown 렌더링은 **MDX**를 지원합니다 — Markdown 내에서 이름으로 직접 JSX/프레임워크 컴포넌트를 사용할 수 있습니다.
|
|
139
146
|
|
|
140
|
-
|
|
147
|
+
### 1. 자동 렌더링 (`useIntlayer`를 통한 방식)
|
|
141
148
|
|
|
142
149
|
<Tabs group="framework">
|
|
143
150
|
<Tab label="React / Next.js" value="react">
|
|
144
|
-
|
|
151
|
+
Markdown 노드는 JSX로 직접 렌더링할 수 있습니다.
|
|
145
152
|
|
|
146
153
|
```tsx fileName="App.tsx"
|
|
147
154
|
import { useIntlayer } from "react-intlayer";
|
|
155
|
+
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
148
156
|
|
|
149
157
|
const AppContent = () => {
|
|
150
158
|
const { myMarkdownContent } = useIntlayer("app");
|
|
159
|
+
|
|
151
160
|
return <div>{myMarkdownContent}</div>;
|
|
152
161
|
};
|
|
162
|
+
|
|
163
|
+
const App = () => (
|
|
164
|
+
<MarkdownProvider
|
|
165
|
+
components={{
|
|
166
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
167
|
+
MyButton: (props) => <button {...props} />, // MDX 컴포넌트
|
|
168
|
+
}}
|
|
169
|
+
>
|
|
170
|
+
<AppContent />
|
|
171
|
+
</MarkdownProvider>
|
|
172
|
+
);
|
|
153
173
|
```
|
|
154
174
|
|
|
155
|
-
|
|
175
|
+
> `MarkdownProvider`가 없는 경우 Intlayer는 기본 Markdown to JSX 파서를 사용하여 마크다운을 렌더링합니다.
|
|
176
|
+
|
|
177
|
+
`.use()` 메서드를 사용하여 특정 노드에 대한 로컬 재정의를 제공할 수도 있습니다:
|
|
156
178
|
|
|
157
179
|
```tsx
|
|
158
180
|
{myMarkdownContent.use({
|
|
159
|
-
h1: ({ children }) => <h1
|
|
181
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
160
182
|
})}
|
|
161
183
|
```
|
|
162
184
|
|
|
185
|
+
문자열로 Markdown을 가져올 수 있습니다:
|
|
186
|
+
|
|
187
|
+
```tsx
|
|
188
|
+
{myMarkdownContent.value}
|
|
189
|
+
{String(myMarkdownContent)}
|
|
190
|
+
{myMarkdownContent.toString()}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
그리고 다음과 같이 마크다운 메타데이터에 접근할 수 있습니다:
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
{myMarkdownContent.metadata}
|
|
197
|
+
{myMarkdownContent.metadata.title}
|
|
198
|
+
```
|
|
199
|
+
|
|
163
200
|
</Tab>
|
|
164
201
|
<Tab label="Vue" value="vue">
|
|
165
|
-
Vue
|
|
202
|
+
Vue에서 Markdown 콘텐츠는 내장 `component`를 사용하거나 노드로서 직접 렌더링될 수 있습니다.
|
|
166
203
|
|
|
167
204
|
```vue fileName="App.vue"
|
|
168
205
|
<script setup>
|
|
@@ -175,48 +212,188 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
175
212
|
</template>
|
|
176
213
|
```
|
|
177
214
|
|
|
215
|
+
`intlayerMarkdown` 플러그인을 통해 전역으로 구성합니다(MDX 사용자 지정 컴포넌트 지원):
|
|
216
|
+
|
|
217
|
+
```ts fileName="main.ts"
|
|
218
|
+
import { intlayerMarkdown } from "vue-intlayer/markdown";
|
|
219
|
+
|
|
220
|
+
app.use(intlayerMarkdown, {
|
|
221
|
+
components: {
|
|
222
|
+
h1: (props) => h('h1', { style: { color: 'green' } }, props.children),
|
|
223
|
+
MyButton: (props) => h('button', props), // MDX 컴포넌트
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
> `intlayerMarkdown` 플러그인이 설치되지 않은 경우 Intlayer는 기본 컴파일러를 사용하여 렌더링합니다.
|
|
229
|
+
|
|
230
|
+
`.use()` 메서드를 사용하여 특정 노드에 대한 로컬 재정의를 제공할 수도 있습니다:
|
|
231
|
+
|
|
232
|
+
```vue
|
|
233
|
+
<component :is="myMarkdownContent.use({
|
|
234
|
+
h1: (props) => h('h1', { style: { color: 'red' } }, props.children),
|
|
235
|
+
})" />
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
문자열로 Markdown을 가져올 수 있습니다:
|
|
239
|
+
|
|
240
|
+
```vue
|
|
241
|
+
{{ myMarkdownContent.value }}
|
|
242
|
+
{{ String(myMarkdownContent) }}
|
|
243
|
+
{{ myMarkdownContent.toString() }}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
그리고 다음과 같이 마크다운 메타데이터에 접근할 수 있습니다:
|
|
247
|
+
|
|
248
|
+
```vue
|
|
249
|
+
<component :is="myMarkdownContent.metadata" />
|
|
250
|
+
<component :is="myMarkdownContent.metadata.title" />
|
|
251
|
+
```
|
|
252
|
+
|
|
178
253
|
</Tab>
|
|
179
254
|
<Tab label="Svelte" value="svelte">
|
|
180
|
-
Svelte는 기본적으로
|
|
255
|
+
Svelte는 기본적으로 Markdown을 HTML 문자열로 렌더링합니다. 이를 렌더링하려면 `{@html}`을 사용하세요.
|
|
181
256
|
|
|
182
|
-
```svelte
|
|
257
|
+
```svelte fileName="App.svelte"
|
|
183
258
|
<script lang="ts">
|
|
184
259
|
import { useIntlayer } from "svelte-intlayer";
|
|
260
|
+
import { MarkdownProvider } from "svelte-intlayer/markdown";
|
|
261
|
+
import MyHeading from "./MyHeading.svelte";
|
|
262
|
+
|
|
185
263
|
const content = useIntlayer("app");
|
|
186
264
|
</script>
|
|
187
265
|
|
|
188
|
-
{
|
|
266
|
+
<MarkdownProvider components={{ h1: MyHeading }}>
|
|
267
|
+
{@html $content.myMarkdownContent}
|
|
268
|
+
</MarkdownProvider>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
> `MarkdownProvider`가 없는 경우 Intlayer는 기본 컴파일러를 사용하여 마크다운을 렌더링합니다.
|
|
272
|
+
|
|
273
|
+
`.use()` 메서드를 사용하여 특정 노드에 대한 로컬 재정의를 제공할 수도 있습니다:
|
|
274
|
+
|
|
275
|
+
```svelte
|
|
276
|
+
{@html $content.myMarkdownContent.use({ ... })}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
문자열로 Markdown을 가져올 수 있습니다:
|
|
280
|
+
|
|
281
|
+
```svelte
|
|
282
|
+
{$content.myMarkdownContent.value}
|
|
283
|
+
{String($content.myMarkdownContent)}
|
|
284
|
+
{$content.myMarkdownContent.toString()}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
그리고 다음과 같이 마크다운 메타데이터에 접근할 수 있습니다:
|
|
288
|
+
|
|
289
|
+
```svelte
|
|
290
|
+
{$content.myMarkdownContent.metadata}
|
|
291
|
+
{$content.myMarkdownContent.metadata.title}
|
|
189
292
|
```
|
|
190
293
|
|
|
191
294
|
</Tab>
|
|
192
295
|
<Tab label="Preact" value="preact">
|
|
193
|
-
Preact는 JSX에서
|
|
296
|
+
Preact는 JSX에서 Markdown 노드를 직접 지원합니다.
|
|
194
297
|
|
|
195
298
|
```tsx fileName="App.tsx"
|
|
196
299
|
import { useIntlayer } from "preact-intlayer";
|
|
300
|
+
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
197
301
|
|
|
198
302
|
const AppContent = () => {
|
|
199
303
|
const { myMarkdownContent } = useIntlayer("app");
|
|
200
304
|
return <div>{myMarkdownContent}</div>;
|
|
201
305
|
};
|
|
306
|
+
|
|
307
|
+
const App = () => (
|
|
308
|
+
<MarkdownProvider
|
|
309
|
+
components={{
|
|
310
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
311
|
+
MyButton: (props) => <button {...props} />, // MDX 컴포넌트
|
|
312
|
+
}}
|
|
313
|
+
>
|
|
314
|
+
<AppContent />
|
|
315
|
+
</MarkdownProvider>
|
|
316
|
+
);
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
> `MarkdownProvider`가 없는 경우 Intlayer는 기본 Markdown to JSX 파서를 사용하여 마크다운을 렌더링합니다.
|
|
320
|
+
|
|
321
|
+
`.use()` 메서드를 사용하여 특정 노드에 대한 로컬 재정의를 제공할 수도 있습니다:
|
|
322
|
+
|
|
323
|
+
```tsx
|
|
324
|
+
{myMarkdownContent.use({
|
|
325
|
+
h1: ({ children }) => <h1 style={{ color: "red" }}>{children}</h1>,
|
|
326
|
+
})}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
문자열로 Markdown을 가져올 수 있습니다:
|
|
330
|
+
|
|
331
|
+
```tsx
|
|
332
|
+
{myMarkdownContent.value}
|
|
333
|
+
{String(myMarkdownContent)}
|
|
334
|
+
{myMarkdownContent.toString()}
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
그리고 다음과 같이 마크다운 메타데이터에 접근할 수 있습니다:
|
|
338
|
+
|
|
339
|
+
```tsx
|
|
340
|
+
{myMarkdownContent.metadata}
|
|
341
|
+
{myMarkdownContent.metadata.title}
|
|
202
342
|
```
|
|
203
343
|
|
|
204
344
|
</Tab>
|
|
205
345
|
<Tab label="Solid" value="solid">
|
|
206
|
-
Solid는 JSX에서
|
|
346
|
+
Solid는 JSX에서 Markdown 노드를 직접 지원합니다.
|
|
207
347
|
|
|
208
348
|
```tsx fileName="App.tsx"
|
|
209
349
|
import { useIntlayer } from "solid-intlayer";
|
|
350
|
+
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
210
351
|
|
|
211
352
|
const AppContent = () => {
|
|
212
353
|
const { myMarkdownContent } = useIntlayer("app");
|
|
213
354
|
return <div>{myMarkdownContent}</div>;
|
|
214
355
|
};
|
|
356
|
+
|
|
357
|
+
const App = () => (
|
|
358
|
+
<MarkdownProvider
|
|
359
|
+
components={{
|
|
360
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
361
|
+
MyButton: (props) => <button {...props} />, // MDX 컴포넌트
|
|
362
|
+
}}
|
|
363
|
+
>
|
|
364
|
+
<AppContent />
|
|
365
|
+
</MarkdownProvider>
|
|
366
|
+
);
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
> `MarkdownProvider`가 없는 경우 Intlayer는 기본 Markdown to JSX 파서를 사용하여 마크다운을 렌더링합니다.
|
|
370
|
+
|
|
371
|
+
`.use()` 메서드를 사용하여 특정 노드에 대한 로컬 재정의를 제공할 수도 있습니다:
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
{myMarkdownContent.use({
|
|
375
|
+
h1: (props) => <h1 style={{ color: "red" }}>{props.children}</h1>,
|
|
376
|
+
})}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
문자열로 Markdown을 가져올 수 있습니다:
|
|
380
|
+
|
|
381
|
+
```tsx
|
|
382
|
+
{myMarkdownContent.value}
|
|
383
|
+
{String(myMarkdownContent)}
|
|
384
|
+
{myMarkdownContent.toString()}
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
그리고 다음과 같이 마크다운 메타데이터에 접근할 수 있습니다:
|
|
388
|
+
|
|
389
|
+
```tsx
|
|
390
|
+
{myMarkdownContent.metadata}
|
|
391
|
+
{myMarkdownContent.metadata.title}
|
|
215
392
|
```
|
|
216
393
|
|
|
217
394
|
</Tab>
|
|
218
395
|
<Tab label="Angular" value="angular">
|
|
219
|
-
Angular는
|
|
396
|
+
Angular는 `[innerHTML]` 지시문을 사용하여 Markdown 콘텐츠를 렌더링합니다.
|
|
220
397
|
|
|
221
398
|
```typescript fileName="app.component.ts"
|
|
222
399
|
import { Component } from "@angular/core";
|
|
@@ -231,7 +408,9 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
231
408
|
}
|
|
232
409
|
```
|
|
233
410
|
|
|
234
|
-
|
|
411
|
+
> IntlayerMarkdown 공급자가 구성되지 않은 경우 Intlayer는 기본 컴파일러를 사용하여 렌더링합니다.
|
|
412
|
+
|
|
413
|
+
`.use()` 메서드를 사용하여 특정 노드에 대한 로컬 재정의를 제공할 수도 있습니다:
|
|
235
414
|
|
|
236
415
|
```typescript
|
|
237
416
|
content().myMarkdownContent.use({
|
|
@@ -239,27 +418,46 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
239
418
|
})
|
|
240
419
|
```
|
|
241
420
|
|
|
421
|
+
문자열로 Markdown을 가져올 수 있습니다:
|
|
422
|
+
|
|
423
|
+
```typescript
|
|
424
|
+
content().myMarkdownContent.value
|
|
425
|
+
String(content().myMarkdownContent)
|
|
426
|
+
content().myMarkdownContent.toString()
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
그리고 다음과 같이 마크다운 메타데이터에 접근할 수 있습니다:
|
|
430
|
+
|
|
431
|
+
```typescript
|
|
432
|
+
content().myMarkdownContent.metadata
|
|
433
|
+
content().myMarkdownContent.metadata.title
|
|
434
|
+
```
|
|
435
|
+
|
|
242
436
|
</Tab>
|
|
243
437
|
</Tabs>
|
|
244
438
|
|
|
245
|
-
### 2.
|
|
439
|
+
### 2. 도우미 유틸리티 (Markdown 문자열 전용)
|
|
246
440
|
|
|
247
|
-
|
|
441
|
+
이러한 유틸리티는 **순수 Markdown 문자열만** 렌더링하며 `useIntlayer`와 독립적입니다. 사전 외의 출처에서 Markdown을 렌더링해야 할 때 사용하세요.
|
|
248
442
|
|
|
249
443
|
<Tabs group="framework">
|
|
250
444
|
<Tab label="React / Next.js" value="react">
|
|
251
445
|
|
|
446
|
+
#### `<MarkdownRenderer />` 컴포넌트
|
|
447
|
+
|
|
448
|
+
특정 옵션으로 Markdown 문자열을 렌더링합니다.
|
|
449
|
+
|
|
252
450
|
```tsx
|
|
253
451
|
import { MarkdownRenderer } from "react-intlayer/markdown";
|
|
254
452
|
|
|
255
453
|
<MarkdownRenderer forceBlock={true} tagfilter={true}>
|
|
256
|
-
{"#
|
|
454
|
+
{"# 내 제목"}
|
|
257
455
|
</MarkdownRenderer>
|
|
258
456
|
```
|
|
259
457
|
|
|
260
458
|
#### `useMarkdownRenderer()` 훅
|
|
261
459
|
|
|
262
|
-
|
|
460
|
+
사전 구성된 렌더러 함수를 가져옵니다.
|
|
263
461
|
|
|
264
462
|
```tsx
|
|
265
463
|
import { useMarkdownRenderer } from "react-intlayer/markdown";
|
|
@@ -269,16 +467,16 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
269
467
|
components: { h1: (props) => <h1 {...props} className="custom" /> }
|
|
270
468
|
});
|
|
271
469
|
|
|
272
|
-
return renderMarkdown("#
|
|
470
|
+
return renderMarkdown("# 내 제목");
|
|
273
471
|
```
|
|
274
472
|
|
|
275
473
|
#### `renderMarkdown()` 유틸리티
|
|
276
|
-
컴포넌트
|
|
474
|
+
컴포넌트 외부 렌더링용 독립 실행형 유틸리티.
|
|
277
475
|
|
|
278
476
|
```tsx
|
|
279
477
|
import { renderMarkdown } from "react-intlayer/markdown";
|
|
280
478
|
|
|
281
|
-
const jsx = renderMarkdown("#
|
|
479
|
+
const jsx = renderMarkdown("# 내 제목", { forceBlock: true });
|
|
282
480
|
```
|
|
283
481
|
|
|
284
482
|
</Tab>
|
|
@@ -292,7 +490,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
292
490
|
</script>
|
|
293
491
|
|
|
294
492
|
<template>
|
|
295
|
-
<MarkdownRenderer :forceBlock="true" content="#
|
|
493
|
+
<MarkdownRenderer :forceBlock="true" content="# 내 제목" />
|
|
296
494
|
</template>
|
|
297
495
|
```
|
|
298
496
|
|
|
@@ -306,7 +504,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
306
504
|
import { MarkdownRenderer } from "svelte-intlayer/markdown";
|
|
307
505
|
</script>
|
|
308
506
|
|
|
309
|
-
<MarkdownRenderer forceBlock={true} value="#
|
|
507
|
+
<MarkdownRenderer forceBlock={true} value="# 내 제목" />
|
|
310
508
|
```
|
|
311
509
|
|
|
312
510
|
#### `useMarkdownRenderer()` 훅
|
|
@@ -317,7 +515,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
317
515
|
const render = useMarkdownRenderer();
|
|
318
516
|
</script>
|
|
319
517
|
|
|
320
|
-
{@html render("#
|
|
518
|
+
{@html render("# 내 제목")}
|
|
321
519
|
```
|
|
322
520
|
|
|
323
521
|
#### `renderMarkdown()` 유틸리티
|
|
@@ -327,7 +525,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
327
525
|
import { renderMarkdown } from "svelte-intlayer/markdown";
|
|
328
526
|
</script>
|
|
329
527
|
|
|
330
|
-
{@html renderMarkdown("#
|
|
528
|
+
{@html renderMarkdown("# 내 제목")}
|
|
331
529
|
```
|
|
332
530
|
|
|
333
531
|
</Tab>
|
|
@@ -338,7 +536,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
338
536
|
import { MarkdownRenderer } from "preact-intlayer/markdown";
|
|
339
537
|
|
|
340
538
|
<MarkdownRenderer forceBlock={true}>
|
|
341
|
-
{"#
|
|
539
|
+
{"# 내 제목"}
|
|
342
540
|
</MarkdownRenderer>
|
|
343
541
|
```
|
|
344
542
|
|
|
@@ -349,7 +547,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
349
547
|
|
|
350
548
|
const render = useMarkdownRenderer();
|
|
351
549
|
|
|
352
|
-
return <div>{render("#
|
|
550
|
+
return <div>{render("# 내 제목")}</div>;
|
|
353
551
|
```
|
|
354
552
|
|
|
355
553
|
#### `renderMarkdown()` 유틸리티
|
|
@@ -357,7 +555,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
357
555
|
```tsx
|
|
358
556
|
import { renderMarkdown } from "preact-intlayer/markdown";
|
|
359
557
|
|
|
360
|
-
return <div>{renderMarkdown("#
|
|
558
|
+
return <div>{renderMarkdown("# 내 제목")}</div>;
|
|
361
559
|
```
|
|
362
560
|
|
|
363
561
|
</Tab>
|
|
@@ -368,7 +566,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
368
566
|
import { MarkdownRenderer } from "solid-intlayer/markdown";
|
|
369
567
|
|
|
370
568
|
<MarkdownRenderer forceBlock={true}>
|
|
371
|
-
{"#
|
|
569
|
+
{"# 내 제목"}
|
|
372
570
|
</MarkdownRenderer>
|
|
373
571
|
```
|
|
374
572
|
|
|
@@ -379,7 +577,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
379
577
|
|
|
380
578
|
const render = useMarkdownRenderer();
|
|
381
579
|
|
|
382
|
-
return <div>{render("#
|
|
580
|
+
return <div>{render("# 내 제목")}</div>;
|
|
383
581
|
```
|
|
384
582
|
|
|
385
583
|
#### `renderMarkdown()` 유틸리티
|
|
@@ -387,13 +585,13 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
387
585
|
```tsx
|
|
388
586
|
import { renderMarkdown } from "solid-intlayer/markdown";
|
|
389
587
|
|
|
390
|
-
return <div>{renderMarkdown("#
|
|
588
|
+
return <div>{renderMarkdown("# 내 제목")}</div>;
|
|
391
589
|
```
|
|
392
590
|
|
|
393
591
|
</Tab>
|
|
394
592
|
<Tab label="Angular" value="angular">
|
|
395
593
|
#### `IntlayerMarkdownService` 서비스
|
|
396
|
-
서비스를 사용하여
|
|
594
|
+
서비스를 사용하여 Markdown 문자열을 렌더링합니다.
|
|
397
595
|
|
|
398
596
|
```typescript
|
|
399
597
|
import { IntlayerMarkdownService } from "angular-intlayer/markdown";
|
|
@@ -412,9 +610,9 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
412
610
|
|
|
413
611
|
---
|
|
414
612
|
|
|
415
|
-
## `MarkdownProvider`를
|
|
613
|
+
## `MarkdownProvider`를 통한 전역 구성
|
|
416
614
|
|
|
417
|
-
|
|
615
|
+
`MarkdownProvider`(또는 해당 프레임워크 기능)는 전체 애플리케이션의 Markdown 렌더링 파이프라인을 구성합니다. 이는 자동 `useIntlayer` 렌더링과 도우미 유틸리티 모두에 적용됩니다. 여기서 설정된 옵션이 기본값이며, `.use()`는 노드 수준에서 이를 덮어씁니다.
|
|
418
616
|
|
|
419
617
|
<Tabs group="framework">
|
|
420
618
|
<Tab label="React / Next.js" value="react">
|
|
@@ -425,8 +623,9 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
425
623
|
export const AppProvider = ({ children }) => (
|
|
426
624
|
<MarkdownProvider
|
|
427
625
|
components={{
|
|
428
|
-
h1: (
|
|
429
|
-
a: ({ href,
|
|
626
|
+
h1: (props) => <h1 style={{color: 'green'}} {...props} />,
|
|
627
|
+
a: ({ href, ...props }) => <a style={{color: 'red'}} {...props} />,
|
|
628
|
+
MyCustomJSXComponent: (props) => <span style={{color: 'red'}} {...props} />,
|
|
430
629
|
}}
|
|
431
630
|
>
|
|
432
631
|
{children}
|
|
@@ -434,7 +633,9 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
434
633
|
);
|
|
435
634
|
```
|
|
436
635
|
|
|
437
|
-
|
|
636
|
+
> MDX 지원 — Markdown 내부에서 사용된 모든 컴포넌트 이름(예: `<MyCustomJSXComponent />`)은 `components` 맵에서 확인됩니다.
|
|
637
|
+
|
|
638
|
+
자체 마크다운 렌더러를 사용할 수도 있습니다:
|
|
438
639
|
|
|
439
640
|
```tsx fileName="AppProvider.tsx"
|
|
440
641
|
import { MarkdownProvider } from "react-intlayer/markdown";
|
|
@@ -442,8 +643,9 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
442
643
|
export const AppProvider = ({ children }) => (
|
|
443
644
|
<MarkdownProvider
|
|
444
645
|
renderMarkdown={async (md) => {
|
|
445
|
-
|
|
446
|
-
|
|
646
|
+
// Use dynamic import to reduce the bundle size of your application
|
|
647
|
+
const { renderMarkdown } = await import('react-intlayer/markdown');
|
|
648
|
+
return renderMarkdown(md);
|
|
447
649
|
}}
|
|
448
650
|
>
|
|
449
651
|
{children}
|
|
@@ -451,7 +653,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
451
653
|
);
|
|
452
654
|
```
|
|
453
655
|
|
|
454
|
-
> Markdown 렌더러를 동적으로 가져오는 것은
|
|
656
|
+
> Markdown 렌더러를 동적으로 가져오는 것은 애플리케이션 번들 크기를 줄이는 좋은 방법입니다.
|
|
455
657
|
|
|
456
658
|
</Tab>
|
|
457
659
|
<Tab label="Vue" value="vue">
|
|
@@ -478,7 +680,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
478
680
|
app.mount("#app");
|
|
479
681
|
```
|
|
480
682
|
|
|
481
|
-
|
|
683
|
+
자체 마크다운 렌더러를 사용할 수도 있습니다:
|
|
482
684
|
|
|
483
685
|
```typescript fileName="main.ts"
|
|
484
686
|
import { createApp } from "vue";
|
|
@@ -491,15 +693,15 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
491
693
|
app.use(intlayer);
|
|
492
694
|
app.use(intlayerMarkdown, {
|
|
493
695
|
renderMarkdown: async (md) => {
|
|
494
|
-
const {
|
|
495
|
-
return
|
|
696
|
+
const { renderMarkdown } = await import('vue-intlayer/markdown');
|
|
697
|
+
return renderMarkdown(md);
|
|
496
698
|
},
|
|
497
699
|
});
|
|
498
700
|
|
|
499
701
|
app.mount("#app");
|
|
500
702
|
```
|
|
501
703
|
|
|
502
|
-
> Markdown 렌더러를 동적으로 가져오는 것은
|
|
704
|
+
> Markdown 렌더러를 동적으로 가져오는 것은 애플리케이션 번들 크기를 줄이는 좋은 방법입니다.
|
|
503
705
|
|
|
504
706
|
</Tab>
|
|
505
707
|
<Tab label="Svelte" value="svelte">
|
|
@@ -519,7 +721,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
519
721
|
</MarkdownProvider>
|
|
520
722
|
```
|
|
521
723
|
|
|
522
|
-
|
|
724
|
+
자체 마크다운 렌더러를 사용할 수도 있습니다:
|
|
523
725
|
|
|
524
726
|
```svelte fileName="App.svelte"
|
|
525
727
|
<script lang="ts">
|
|
@@ -528,15 +730,15 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
528
730
|
|
|
529
731
|
<MarkdownProvider
|
|
530
732
|
renderMarkdown={async (md) => {
|
|
531
|
-
const {
|
|
532
|
-
return
|
|
733
|
+
const { renderMarkdown } = await import('svelte-intlayer/markdown');
|
|
734
|
+
return renderMarkdown(md);
|
|
533
735
|
}}
|
|
534
736
|
>
|
|
535
737
|
<slot />
|
|
536
738
|
</MarkdownProvider>
|
|
537
739
|
```
|
|
538
740
|
|
|
539
|
-
> Markdown 렌더러를 동적으로 가져오는 것은
|
|
741
|
+
> Markdown 렌더러를 동적으로 가져오는 것은 애플리케이션 번들 크기를 줄이는 좋은 방법입니다.
|
|
540
742
|
|
|
541
743
|
</Tab>
|
|
542
744
|
<Tab label="Preact" value="preact">
|
|
@@ -555,7 +757,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
555
757
|
);
|
|
556
758
|
```
|
|
557
759
|
|
|
558
|
-
|
|
760
|
+
자체 마크다운 렌더러를 사용할 수도 있습니다:
|
|
559
761
|
|
|
560
762
|
```tsx fileName="AppProvider.tsx"
|
|
561
763
|
import { MarkdownProvider } from "preact-intlayer/markdown";
|
|
@@ -563,8 +765,8 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
563
765
|
export const AppProvider = ({ children }) => (
|
|
564
766
|
<MarkdownProvider
|
|
565
767
|
renderMarkdown={async (md) => {
|
|
566
|
-
const {
|
|
567
|
-
return
|
|
768
|
+
const { renderMarkdown } = await import('preact-intlayer/markdown');
|
|
769
|
+
return renderMarkdown(md);
|
|
568
770
|
}}
|
|
569
771
|
>
|
|
570
772
|
{children}
|
|
@@ -572,7 +774,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
572
774
|
);
|
|
573
775
|
```
|
|
574
776
|
|
|
575
|
-
> Markdown 렌더러를 동적으로 가져오는 것은
|
|
777
|
+
> Markdown 렌더러를 동적으로 가져오는 것은 애플리케이션 번들 크기를 줄이는 좋은 방법입니다.
|
|
576
778
|
|
|
577
779
|
</Tab>
|
|
578
780
|
<Tab label="Solid" value="solid">
|
|
@@ -591,7 +793,7 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
591
793
|
);
|
|
592
794
|
```
|
|
593
795
|
|
|
594
|
-
|
|
796
|
+
자체 마크다운 렌더러를 사용할 수도 있습니다:
|
|
595
797
|
|
|
596
798
|
```tsx fileName="AppProvider.tsx"
|
|
597
799
|
import { MarkdownProvider } from "solid-intlayer/markdown";
|
|
@@ -599,8 +801,8 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
599
801
|
export const AppProvider = (props) => (
|
|
600
802
|
<MarkdownProvider
|
|
601
803
|
renderMarkdown={async (md) => {
|
|
602
|
-
const {
|
|
603
|
-
return
|
|
804
|
+
const { renderMarkdown } = await import('solid-intlayer/markdown');
|
|
805
|
+
return renderMarkdown(md);
|
|
604
806
|
}}
|
|
605
807
|
>
|
|
606
808
|
{props.children}
|
|
@@ -608,59 +810,29 @@ Intlayer는 마크다운 문법을 사용하여 정의된 리치 텍스트 콘
|
|
|
608
810
|
);
|
|
609
811
|
```
|
|
610
812
|
|
|
611
|
-
> Markdown 렌더러를 동적으로 가져오는 것은
|
|
813
|
+
> Markdown 렌더러를 동적으로 가져오는 것은 애플리케이션 번들 크기를 줄이는 좋은 방법입니다.
|
|
612
814
|
|
|
613
815
|
</Tab>
|
|
614
816
|
<Tab label="Angular" value="angular">
|
|
615
817
|
|
|
616
|
-
```typescript fileName="app.
|
|
617
|
-
import {
|
|
618
|
-
|
|
619
|
-
export const appConfig: ApplicationConfig = {
|
|
620
|
-
providers: [
|
|
621
|
-
createIntlayerMarkdownProvider({
|
|
622
|
-
components: {
|
|
623
|
-
h1: { class: "text-2xl font-bold" },
|
|
624
|
-
},
|
|
625
|
-
}),
|
|
626
|
-
],
|
|
627
|
-
};
|
|
628
|
-
```
|
|
629
|
-
|
|
630
|
-
나만의 Markdown 렌더러를 사용할 수도 있습니다:
|
|
818
|
+
```typescript fileName="app.module.ts"
|
|
819
|
+
import { NgModule } from '@angular/core';
|
|
820
|
+
import { IntlayerMarkdownModule } from 'angular-intlayer/markdown';
|
|
631
821
|
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
export const appConfig: ApplicationConfig = {
|
|
636
|
-
providers: [
|
|
637
|
-
createIntlayerMarkdownProvider({
|
|
822
|
+
@NgModule({
|
|
823
|
+
imports: [
|
|
824
|
+
IntlayerMarkdownModule.forRoot({
|
|
638
825
|
renderMarkdown: async (md) => {
|
|
639
|
-
const {
|
|
640
|
-
return
|
|
641
|
-
}
|
|
642
|
-
})
|
|
643
|
-
]
|
|
644
|
-
}
|
|
826
|
+
const { renderMarkdown } = await import('angular-intlayer/markdown');
|
|
827
|
+
return renderMarkdown(md);
|
|
828
|
+
}
|
|
829
|
+
})
|
|
830
|
+
]
|
|
831
|
+
})
|
|
832
|
+
export class AppModule {}
|
|
645
833
|
```
|
|
646
834
|
|
|
647
|
-
> Markdown 렌더러를 동적으로 가져오는 것은
|
|
835
|
+
> Markdown 렌더러를 동적으로 가져오는 것은 애플리케이션 번들 크기를 줄이는 좋은 방법입니다.
|
|
648
836
|
|
|
649
837
|
</Tab>
|
|
650
838
|
</Tabs>
|
|
651
|
-
|
|
652
|
-
---
|
|
653
|
-
|
|
654
|
-
## 옵션 참조
|
|
655
|
-
|
|
656
|
-
이 옵션들은 `MarkdownProvider`, `MarkdownRenderer`, `useMarkdownRenderer`, 및 `renderMarkdown`에 전달할 수 있습니다.
|
|
657
|
-
|
|
658
|
-
| 옵션 | 타입 | 기본값 | 설명 |
|
|
659
|
-
| :-------------------- | :---------- | :------ | :---------------------------------------------------------------------------- |
|
|
660
|
-
| `forceBlock` | `boolean` | `false` | 출력을 블록 수준 요소(예: `<div>`)로 감싸도록 강제합니다. |
|
|
661
|
-
| `forceInline` | `boolean` | `false` | 출력을 인라인 요소(예: `<span>`)로 감싸도록 강제합니다. |
|
|
662
|
-
| `tagfilter` | `boolean` | `true` | 위험한 HTML 태그를 제거하여 보안을 강화하는 GitHub Tag Filter를 활성화합니다. |
|
|
663
|
-
| `preserveFrontmatter` | `boolean` | `false` | `true`인 경우 마크다운 문자열 시작 부분의 frontmatter가 제거되지 않습니다. |
|
|
664
|
-
| `components` | `Overrides` | `{}` | HTML 태그를 커스텀 컴포넌트에 매핑하는 맵(예: `{ h1: MyHeading }`). |
|
|
665
|
-
| `wrapper` | `Component` | `null` | 렌더링된 마크다운을 감싸는 커스텀 컴포넌트입니다. |
|
|
666
|
-
| `renderMarkdown` | `Function` | `null` | 기본 마크다운 컴파일러를 완전히 대체하는 커스텀 렌더링 함수입니다. |
|