diff --git a/packages/docusaurus-plugin-content-blog/src/index.ts b/packages/docusaurus-plugin-content-blog/src/index.ts index 6229e14e8788..4eb7bb075000 100644 --- a/packages/docusaurus-plugin-content-blog/src/index.ts +++ b/packages/docusaurus-plugin-content-blog/src/index.ts @@ -15,6 +15,7 @@ import { getPluginI18nPath, reportMessage, posixPath, + addTrailingPathSeparator, } from '@docusaurus/utils'; import { STATIC_DIR_NAME, @@ -436,7 +437,9 @@ export default function pluginContentBlog( rules: [ { test: /(\.mdx?)$/, - include: getContentPathList(contentPaths), + include: getContentPathList(contentPaths) + // Trailing slash is important, see https://github.com/facebook/docusaurus/pull/3970 + .map(addTrailingPathSeparator), use: [ getCacheLoader(isServer), getBabelLoader(isServer), diff --git a/packages/docusaurus-plugin-content-docs/src/index.ts b/packages/docusaurus-plugin-content-docs/src/index.ts index e7588ae877e0..05e64ba0d99c 100644 --- a/packages/docusaurus-plugin-content-docs/src/index.ts +++ b/packages/docusaurus-plugin-content-docs/src/index.ts @@ -17,6 +17,7 @@ import { aliasedSitePath, reportMessage, posixPath, + addTrailingPathSeparator, } from '@docusaurus/utils'; import {LoadContext, Plugin, RouteConfig} from '@docusaurus/types'; @@ -345,7 +346,9 @@ export default function pluginContentDocs( function createMDXLoaderRule(): RuleSetRule { return { test: /(\.mdx?)$/, - include: flatten(versionsMetadata.map(getDocsDirPaths)), + include: flatten(versionsMetadata.map(getDocsDirPaths)) + // Trailing slash is important, see https://github.com/facebook/docusaurus/pull/3970 + .map(addTrailingPathSeparator), use: compact([ getCacheLoader(isServer), getBabelLoader(isServer), diff --git a/packages/docusaurus-plugin-content-pages/src/index.ts b/packages/docusaurus-plugin-content-pages/src/index.ts index 68c2ea9c08e8..a147674a334c 100644 --- a/packages/docusaurus-plugin-content-pages/src/index.ts +++ b/packages/docusaurus-plugin-content-pages/src/index.ts @@ -17,6 +17,7 @@ import { docuHash, getPluginI18nPath, getFolderContainingFile, + addTrailingPathSeparator, } from '@docusaurus/utils'; import { LoadContext, @@ -210,7 +211,9 @@ export default function pluginContentPages( rules: [ { test: /(\.mdx?)$/, - include: getContentPathList(contentPaths), + include: getContentPathList(contentPaths) + // Trailing slash is important, see https://github.com/facebook/docusaurus/pull/3970 + .map(addTrailingPathSeparator), use: [ getCacheLoader(isServer), getBabelLoader(isServer), diff --git a/packages/docusaurus-utils/src/index.ts b/packages/docusaurus-utils/src/index.ts index a8a96696cc0b..bcb670bef18e 100644 --- a/packages/docusaurus-utils/src/index.ts +++ b/packages/docusaurus-utils/src/index.ts @@ -414,6 +414,9 @@ export function addLeadingSlash(str: string): string { export function addTrailingSlash(str: string): string { return str.endsWith('/') ? str : `${str}/`; } +export function addTrailingPathSeparator(str: string): string { + return str.endsWith(path.sep) ? str : `${str}${path.sep}`; +} export function removeTrailingSlash(str: string): string { return removeSuffix(str, '/');