mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-11 08:07:26 +02:00
fix(utils): always match exclusion root dirs as complete folder paths (#7864)
* fix(utils): always match exclusion root dirs as complete folder paths * fix * fix? * fix for real
This commit is contained in:
parent
3a0e90eacd
commit
40827c6c72
5 changed files with 35 additions and 5 deletions
|
@ -113,4 +113,21 @@ describe('createAbsoluteFilePathMatcher', () => {
|
|||
`"createAbsoluteFilePathMatcher unexpected error, absoluteFilePath=/bad/path/myDoc.md was not contained in any of the root folders: /_root/docs, /root/_docs/, /__test__/website/src"`,
|
||||
);
|
||||
});
|
||||
|
||||
it('matches paths with overlapping paths', () => {
|
||||
const overlapMatcher = createAbsoluteFilePathMatcher(GlobExcludeDefault, [
|
||||
'/root/docs',
|
||||
'/root/versioned_docs/version-2.0.0',
|
||||
'/root/versioned_docs/version-2.0.0-rc.1',
|
||||
]);
|
||||
expect(
|
||||
overlapMatcher('/root/versioned_docs/version-2.0.0-rc.1/_partial.mdx'),
|
||||
).toBe(true);
|
||||
expect(
|
||||
overlapMatcher('/root/versioned_docs/version-2.0.0/_partial.mdx'),
|
||||
).toBe(true);
|
||||
expect(
|
||||
overlapMatcher('/root/versioned_docs/version-2.0.0/no-partial.mdx'),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
import path from 'path';
|
||||
import Micromatch from 'micromatch'; // Note: Micromatch is used by Globby
|
||||
import {addSuffix} from './jsUtils';
|
||||
|
||||
/** A re-export of the globby instance. */
|
||||
export {default as Globby} from 'globby';
|
||||
|
@ -68,7 +69,9 @@ export function createAbsoluteFilePathMatcher(
|
|||
|
||||
function getRelativeFilePath(absoluteFilePath: string) {
|
||||
const rootFolder = rootFolders.find((folderPath) =>
|
||||
absoluteFilePath.startsWith(folderPath),
|
||||
[addSuffix(folderPath, '/'), addSuffix(folderPath, '\\')].some((p) =>
|
||||
absoluteFilePath.startsWith(p),
|
||||
),
|
||||
);
|
||||
if (!rootFolder) {
|
||||
throw new Error(
|
||||
|
|
|
@ -5,6 +5,16 @@
|
|||
* LICENSE file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/** Adds a given string prefix to `str`. */
|
||||
export function addPrefix(str: string, prefix: string): string {
|
||||
return str.startsWith(prefix) ? str : `${prefix}${str}`;
|
||||
}
|
||||
|
||||
/** Adds a given string suffix to `str`. */
|
||||
export function addSuffix(str: string, suffix: string): string {
|
||||
return str.endsWith(suffix) ? str : `${str}${suffix}`;
|
||||
}
|
||||
|
||||
/** Removes a given string suffix from `str`. */
|
||||
export function removeSuffix(str: string, suffix: string): string {
|
||||
if (suffix === '') {
|
||||
|
|
|
@ -119,5 +119,5 @@ export function addTrailingPathSeparator(str: string): string {
|
|||
return str.endsWith(path.sep)
|
||||
? str
|
||||
: // If this is Windows, we need to change the forward slash to backward
|
||||
`${str.replace(/\/$/, '')}${path.sep}`;
|
||||
`${str.replace(/[\\/]$/, '')}${path.sep}`;
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
*/
|
||||
|
||||
import resolvePathnameUnsafe from 'resolve-pathname';
|
||||
import {removeSuffix} from './jsUtils';
|
||||
import {addPrefix, addSuffix, removeSuffix} from './jsUtils';
|
||||
|
||||
/**
|
||||
* Much like `path.join`, but much better. Takes an array of URL segments, and
|
||||
|
@ -175,13 +175,13 @@ export function resolvePathname(to: string, from?: string): string {
|
|||
}
|
||||
/** Appends a leading slash to `str`, if one doesn't exist. */
|
||||
export function addLeadingSlash(str: string): string {
|
||||
return str.startsWith('/') ? str : `/${str}`;
|
||||
return addPrefix(str, '/');
|
||||
}
|
||||
|
||||
// TODO deduplicate: also present in @docusaurus/utils-common
|
||||
/** Appends a trailing slash to `str`, if one doesn't exist. */
|
||||
export function addTrailingSlash(str: string): string {
|
||||
return str.endsWith('/') ? str : `${str}/`;
|
||||
return addSuffix(str, '/');
|
||||
}
|
||||
|
||||
/** Removes the trailing slash from `str`. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue