Skip to content

Commit 9503a5e

Browse files
authored
fix(doc-core): mdx flatten path resolve (#3756)
1 parent 2d89e4e commit 9503a5e

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

.changeset/silent-actors-marry.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@modern-js/doc-core': patch
3+
---
4+
5+
fix(doc-core): mdx flatten path resolve
6+
7+
fix(doc-core): mdx 文件扁平化过程中路径解析错误

packages/cli/doc-core/src/node/runtimeModule/siteData.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@ async function extractPageData(
242242
);
243243
}
244244
});
245-
246245
// TODO: we will find a more efficient way to do this
247246
const flattenContent = await flattenMdxContent(
248247
frontmatter.__content,

packages/cli/doc-core/src/node/utils/flattenMdxContent.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@ import { Root } from 'hast';
77
import { MDX_REGEXP } from '@/shared/utils';
88

99
const { CachedInputFileSystem, ResolverFactory } = enhancedResolve;
10-
let resolver: Resolver;
1110
const processor = createProcessor();
11+
let resolver: Resolver;
12+
let startFlatten = false;
1213

1314
export async function resolveDepPath(
1415
importPath: string,
@@ -54,7 +55,16 @@ export async function flattenMdxContent(
5455
alias: Record<string, string | string[]>,
5556
): Promise<string> {
5657
let result = content;
57-
58+
// We should update the resolver instanceof because the alias should be passed to it
59+
// If we reuse the resolver instance in `detectReactVersion` method, the resolver will lose the alias info and cannot resolve path correctly in mdx files.
60+
if (!startFlatten) {
61+
resolver = ResolverFactory.createResolver({
62+
fileSystem: new CachedInputFileSystem(fs),
63+
extensions: ['.mdx', '.md', '.js'],
64+
alias,
65+
});
66+
startFlatten = true;
67+
}
5868
let ast: Root;
5969
try {
6070
ast = processor.parse(content) as Root;

0 commit comments

Comments
 (0)