Skip to content

Commit a60345f

Browse files
committed
refactor: Update document & Modify CodeBlockData.
1 parent b9f708b commit a60345f

17 files changed

+722
-224
lines changed

.github/FUNDING.yml

Lines changed: 0 additions & 9 deletions
This file was deleted.

core/README-zh.md

Whitespace-only changes.

core/README.md

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,61 @@
11
markdown-react-code-preview-loader
2-
===========
2+
===
33

4-
解析 markdown 预览代码块,代码块中设置`meta`值,控制是否需要转换预览,把需要的转换的转换成可预览的内容
4+
当前包是 `webpack``loader`,通过配置当前 `loader` 加载 `markdown` 文档,返回一个 `JS` 对象,包含 `markdown` 文本,`markdown` 文本中的示例索引。
5+
6+
## 安装使用
57

68
```bash
7-
npm i markdown-react-code-preview-loader
9+
npm i markdown-react-code-preview-loader -D
810
```
911

10-
> 返回值:
11-
>
12-
> 1. source: `markdown`文件字符串
13-
> 2. BaseCodeData: 行(或自定义的值)对应的可渲染的内容
14-
> 3. codeBlockValue: 行(或自定义的值)对应的原代码块字符串
15-
> 4. languageData: 行(或自定义的值)对应的代码块语言
16-
>
12+
添加 `loader` 之后,在项目工程中加载 `markdown` 文本使用方法:
13+
14+
```jsx
15+
import mdObj from 'markdown-react-code-preview-loader/README.md';
16+
17+
mdObj.source // => `README.md` 原始字符串文本
18+
mdObj.components // => 组件索引对象,从 markdown 索引到的示例转换成的 React 组件。(需要配置 meta)
19+
mdObj.codeBlock // => 组件源码索引对象,从 markdown 索引到的示例源码。(需要配置 meta)
20+
```
1721

1822
```ts
19-
export type MdLoaderReturn = {
23+
export type CodeBlockData = {
2024
source: string;
21-
BaseCodeData: Record<string | number, React.FC>
22-
codeBlockValue: Record<string | number, string>
23-
languageData: Record<string | number, string>
24-
}
25+
components: Record<string | number, React.FC>;
26+
codeBlock: Record<string | number, string>;
27+
languages: Record<string | number, string>;
28+
};
2529
```
2630

2731
## getCodeBlockString
2832

29-
传递`markdown`文件内容字符串,返回转换好的需要预览的代码块解析数据
33+
传递 `markdown` 文件内容字符串返回转换好的需要预览的代码块解析数据
3034

3135
## mdCodeModulesLoader
3236

33-
`webpack`配置中添加`markdown-react-code-preview-loader``loader`配置
34-
35-
## kkt中用法
36-
37-
在[kkt](https://github.com/kktjs/kkt)中使用方式
37+
当前方法是 `webpack``loader`,通过在 kkt 中两种配置方法,了解如何使用配置 loader。
3838

39-
**第一种使用mdCodeModulesLoader方法**
39+
**第 ① 种方法,使用 mdCodeModulesLoader 方法**
4040

4141
```ts
4242
// .kktrc.ts
43-
44-
import webpack, { Configuration } from 'webpack';
4543
import scopePluginOptions from '@kkt/scope-plugin-options';
46-
import { LoaderConfOptions } from 'kkt';
44+
import { LoaderConfOptions, WebpackConfiguration } from 'kkt';
4745
import { mdCodeModulesLoader } from 'markdown-react-code-preview-loader';
4846

49-
export default (conf: Configuration, env: 'development' | 'production', options: LoaderConfOptions) => {
47+
export default (conf: WebpackConfiguration, env: 'development' | 'production', options: LoaderConfOptions) => {
5048
// ....
5149
conf = mdCodeModulesLoader(conf);
5250
// ....
5351
return conf;
5452
};
55-
5653
```
5754

58-
**第二种直接自己添加**
55+
**第 ② 种方法,自己手动添加配置,在 Webpack 中配置使用方法是一样的**
5956

6057
```ts
6158
// .kktrc.ts
62-
6359
import webpack, { Configuration } from 'webpack';
6460
import scopePluginOptions from '@kkt/scope-plugin-options';
6561
import { LoaderConfOptions } from 'kkt';
@@ -84,29 +80,28 @@ export default (conf: Configuration, env: 'development' | 'production', options:
8480
// ....
8581
return conf;
8682
};
87-
8883
```
8984

90-
## options参数
85+
### options 参数
9186

92-
> lang: 需要解析代码块的语言,默认:`["jsx","tsx"]`
87+
- lang: 需要解析代码块的语言默认: `["jsx","tsx"]`
9388

94-
## markdown 设置 meta 值
89+
## Markdown 设置 meta 值
9590

96-
> 1. mdx:: 特殊标识
97-
> 2. mdx:preview: 控制是否进行进行预览的
98-
> 3. mdx:preview:demo12:`demo12`是设置的一个保存渲染数据的变量名称,根据这个设置的变量名称获取渲染数据,默认这个值是所属code代码块开始行值
91+
需要在代码块示例中添加特殊的 `meta` 标识,`loader` 才会去索引对于的 `react` 示例,进行代码转换。
9992

100-
```markdown
93+
1. `mdx:` 特殊标识前缀
94+
2. `mdx:preview` 控制是否进行进行示例索引,通过对应所在行号,获取需要的示例对象。
95+
3. `mdx:preview:demo12` 通过 `demo12` 唯一标识,准确获取索引的 `示例代码``示例组件对象`
10196

102-
\```tsx mdx:preview
97+
```markdown mdx:preview
98+
\```tsx
10399
import React from "react"
104100
const Demo = ()=>{
105101
return <div>测试</div>
106102
}
107103

108104
export default Demo
109-
110105
\```
111106

112107
\```tsx mdx:preview:demo12
@@ -116,7 +111,18 @@ const Demo = ()=>{
116111
}
117112

118113
export default Demo
114+
\```
115+
```
119116

120-
\```
117+
## Development
121118

119+
```bash
120+
npm install # Install dependencies
121+
npm run hoist # Install sub packages dependencies
122+
123+
npm run watch:loader
124+
npm run start
122125
```
126+
### License
127+
128+
Licensed under the MIT License.

core/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"$schema": "https://json.schemastore.org/package.json",
23
"name": "markdown-react-code-preview-loader",
34
"version": "1.0.0",
45
"description": "解析 markdown 预览代码块,转换成可预览的内容",

core/src/index.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { getCodeBlockString } from './utils';
22
import React from 'react';
33
export * from './utils';
4-
export type MdLoaderReturn = {
4+
5+
export type CodeBlockData = {
56
source: string;
6-
BaseCodeData: Record<string | number, React.FC>;
7-
codeBlockValue: Record<string | number, string>;
8-
languageData: Record<string | number, string>;
7+
components: Record<string | number, React.FC>;
8+
codeBlock: Record<string | number, string>;
9+
languages: Record<string | number, string>;
910
};
1011

1112
export default function (source: string) {
@@ -15,9 +16,9 @@ export default function (source: string) {
1516
${result}
1617
export default {
1718
source:${JSON.stringify(source)},
18-
BaseCodeData,
19-
codeBlockValue,
20-
languageData
19+
components,
20+
codeBlock,
21+
languages
2122
}
2223
`;
2324
}

core/src/utils/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ const createStr = (codeBlock: Record<string | number, CodeBlockItemType>) => {
5959
codeBlockValue += `${name}:\`${value}\`,\n`;
6060
languageStr += `${name}:\`${language}\`,\n`;
6161
});
62-
let indexStr = `${baseCodeStr} const languageData={${languageStr}};\n const codeBlockValue={${codeBlockValue}};\n const BaseCodeData={${baseCodeObjStr}}`;
62+
let indexStr = `${baseCodeStr} const languages={${languageStr}};\n const codeBlock={${codeBlockValue}};\n const components={${baseCodeObjStr}}`;
6363
return indexStr;
6464
};
6565

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
{
2+
"$schema": "https://json.schemastore.org/package.json",
23
"private": true,
34
"scripts": {
45
"⬇️⬇️⬇️⬇️⬇️ package ⬇️⬇️⬇️⬇️⬇️": "▼▼▼▼▼ package ▼▼▼▼▼",
@@ -36,8 +37,6 @@
3637
},
3738
"license": "MIT",
3839
"devDependencies": {
39-
"@kkt/ncc": "~1.0.8",
40-
"compile-less-cli": "~1.8.11",
4140
"husky": "~7.0.4",
4241
"lerna": "~4.0.0",
4342
"lint-staged": "~12.3.4",

website/.kktrc.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import path from 'path';
2-
import webpack, { Configuration } from 'webpack';
2+
import webpack from 'webpack';
33
import lessModules from '@kkt/less-modules';
44
import rawModules from '@kkt/raw-modules';
55
import scopePluginOptions from '@kkt/scope-plugin-options';
6-
import { LoaderConfOptions } from 'kkt';
6+
import { LoaderConfOptions, WebpackConfiguration } from 'kkt';
77
import pkg from './package.json';
88
import { mdCodeModulesLoader } from 'markdown-react-code-preview-loader';
99

10-
export default (conf: Configuration, env: 'development' | 'production', options: LoaderConfOptions) => {
10+
export default (conf: WebpackConfiguration, env: 'development' | 'production', options: LoaderConfOptions) => {
1111
conf = lessModules(conf, env, options);
1212
conf = rawModules(conf, env, options);
1313
conf = scopePluginOptions(conf, env, {

website/package.json

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
2+
"$schema": "https://json.schemastore.org/package.json",
23
"name": "website",
3-
"version": "1.0.1",
4+
"version": "1.0.0",
45
"description": "Simple React package development project example template.",
56
"private": true,
67
"scripts": {
@@ -15,23 +16,25 @@
1516
"dependencies": {
1617
"@uiw/react-github-corners": "~1.5.3",
1718
"@uiw/react-markdown-preview": "~4.0.7",
18-
"react": "18.1.0",
19-
"react-dom": "18.1.0",
20-
"uiw": "^4.21.7",
2119
"@uiw/react-layout": "~5.0.0-beta.1",
2220
"@uiw/react-stackblitz": "~1.0.5",
2321
"@uiw/react-codesandbox": "~1.1.5",
2422
"@uiw/react-codepen": "~1.0.2",
25-
"@uiw/copy-to-clipboard": "^1.0.12"
23+
"@uiw/copy-to-clipboard": "^1.0.12",
24+
"@wcj/dark-mode": "^1.0.14",
25+
"react": "18.1.0",
26+
"react-dom": "18.1.0",
27+
"react-router-dom": "^6.3.0",
28+
"uiw": "^4.21.7"
2629
},
2730
"devDependencies": {
28-
"markdown-react-code-preview-loader": "1.0.0",
2931
"@kkt/less-modules": "~7.1.1",
3032
"@kkt/raw-modules": "~7.1.1",
3133
"@kkt/scope-plugin-options": "~7.1.1",
3234
"@types/react": "18.0.8",
3335
"@types/react-dom": "18.0.3",
34-
"kkt": "~7.1.5"
36+
"kkt": "~7.1.5",
37+
"markdown-react-code-preview-loader": "1.0.0"
3538
},
3639
"eslintConfig": {
3740
"extends": [

website/src/App.md

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)