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, '')