diff --git a/packages/docusaurus-utils/src/__tests__/index.test.ts b/packages/docusaurus-utils/src/__tests__/index.test.ts index 44411a921a..b9627f2156 100644 --- a/packages/docusaurus-utils/src/__tests__/index.test.ts +++ b/packages/docusaurus-utils/src/__tests__/index.test.ts @@ -374,12 +374,16 @@ describe('load utils', () => { output: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum ex urna, molestie et sagittis ut, varius ac justo.', }, - // Content with imports declarations and Markdown markup, as well as Emoji + // Content with imports/exports declarations and Markdown markup, as well as Emoji { input: ` import Component from '@site/src/components/Component'; import Component from '@site/src/components/Component' + export function ItemCol(props) { return } + + export function ItemCol(props) { return }; + Lorem **ipsum** dolor sit \`amet\`[^1], consectetur _adipiscing_ elit. [**Vestibulum**](https://wiktionary.org/wiki/vestibulum) ex urna[^bignote], ~molestie~ et sagittis ut, varius ac justo :wink:. Nunc porttitor libero nec vulputate venenatis. Nam nec rhoncus mauris. Morbi tempus est et nibh maximus, tempus venenatis arcu lobortis. diff --git a/packages/docusaurus-utils/src/index.ts b/packages/docusaurus-utils/src/index.ts index ef693a4bbb..6de875d4c3 100644 --- a/packages/docusaurus-utils/src/index.ts +++ b/packages/docusaurus-utils/src/index.ts @@ -188,21 +188,21 @@ export function getSubFolder(file: string, refDir: string): string | null { return match && match[1]; } -// Regex for an import statement. -const importRegexString = '^(.*import){1}(.+){0,1}\\s[\'"](.+)[\'"];?'; - export function createExcerpt(fileString: string): string | undefined { - let fileContent = fileString.trimLeft(); - - if (RegExp(importRegexString).test(fileContent)) { - fileContent = fileContent - .replace(RegExp(importRegexString, 'gm'), '') - .trimLeft(); - } - - const fileLines = fileContent.split('\n'); + const fileLines = fileString.trimLeft().split('\n'); + /* eslint-disable no-continue */ for (const fileLine of fileLines) { + // Skip empty line. + if (!fileLine.trim()) { + continue; + } + + // Skip import/export declaration. + if (/^.*import\s.*from.*;?|export\s.*{.*};?/.test(fileLine)) { + continue; + } + const cleanedLine = fileLine // Remove HTML tags. .replace(/<[^>]*>/g, '')