@@ -13,56 +13,56 @@ class DocusaurusLlmsGenerator {
13
13
14
14
async generate ( ) {
15
15
try {
16
- console . log ( '🔍 Extraction des pages de documentation ...' ) ;
16
+ console . log ( '🔍 Extracting documentation pages...' ) ;
17
17
const pages = await this . extractAllPages ( ) ;
18
- console . log ( `📄 ${ pages . length } pages trouvées ` ) ;
18
+ console . log ( `📄 ${ pages . length } pages found ` ) ;
19
19
20
- console . log ( '📝 Génération de llms.txt...' ) ;
20
+ console . log ( '📝 Generating llms.txt...' ) ;
21
21
const llmsTxt = this . generateLlmsTxt ( pages ) ;
22
22
await fs . ensureDir ( this . outputDir ) ;
23
23
await fs . writeFile ( path . join ( this . outputDir , 'llms.txt' ) , llmsTxt ) ;
24
24
25
- console . log ( '📚 Génération de llms-full.txt...' ) ;
25
+ console . log ( '📚 Generating llms-full.txt...' ) ;
26
26
const llmsFullTxt = this . generateLlmsFullTxt ( pages ) ;
27
27
await fs . writeFile ( path . join ( this . outputDir , 'llms-full.txt' ) , llmsFullTxt ) ;
28
28
29
- console . log ( '✅ Fichiers LLMs générés avec succès !' ) ;
29
+ console . log ( '✅ LLMs files successfully generated !' ) ;
30
30
console . log ( ` - ${ this . outputDir } /llms.txt` ) ;
31
31
console . log ( ` - ${ this . outputDir } /llms-full.txt` ) ;
32
32
} catch ( error ) {
33
- console . error ( '❌ Erreur lors de la génération :' , error ) ;
33
+ console . error ( '❌ Error while trying to generate LLMs files :' , error ) ;
34
34
throw error ;
35
35
}
36
36
}
37
37
38
38
async extractAllPages ( ) {
39
39
const pages = [ ] ;
40
40
41
- // Charge la configuration sidebar
41
+ // Load sidebar configuration
42
42
const sidebarConfig = this . loadSidebarConfig ( ) ;
43
43
44
- // Parse chaque sidebar
44
+ // Parses every sidebar
45
45
for ( const [ sidebarName , sidebarItems ] of Object . entries ( sidebarConfig ) ) {
46
46
await this . processItems ( sidebarItems , pages ) ;
47
47
}
48
48
49
- // Trie les pages par URL pour un ordre cohérent
49
+ // Sort pages by URL for a consistent and clear order
50
50
return pages . sort ( ( a , b ) => a . url . localeCompare ( b . url ) ) ;
51
51
}
52
52
53
53
loadSidebarConfig ( ) {
54
54
try {
55
- // Supprime le cache pour recharger la config
55
+ // Deletes cache to reload config
56
56
delete require . cache [ require . resolve ( path . resolve ( this . sidebarPath ) ) ] ;
57
57
return require ( path . resolve ( this . sidebarPath ) ) ;
58
58
} catch ( error ) {
59
- console . warn ( `⚠️ Impossible de charger ${ this . sidebarPath } , utilisation du scan de dossier ` ) ;
59
+ console . warn ( `⚠️ Failed to load ${ this . sidebarPath } , using folder scan` ) ;
60
60
return this . fallbackToDirectoryScan ( ) ;
61
61
}
62
62
}
63
63
64
64
async fallbackToDirectoryScan ( ) {
65
- // Scan direct du dossier docs si sidebar.js n'est pas accessible
65
+ // Direct scan of docs/ folder if sidebar.js is not available
66
66
const allFiles = await this . getAllMdFiles ( this . docsDir ) ;
67
67
return { docs : allFiles . map ( file => file . replace ( '.md' , '' ) ) } ;
68
68
}
@@ -128,28 +128,28 @@ class DocusaurusLlmsGenerator {
128
128
frontmatter
129
129
} ) ;
130
130
131
- break ; // Arrête dès qu'un fichier est trouvé
131
+ break ; // Stops once a file is found
132
132
} catch ( error ) {
133
- console . warn ( `⚠️ Erreur lors du traitement de ${ filePath } :` , error . message ) ;
133
+ console . warn ( `⚠️ Error while handling file ${ filePath } :` , error . message ) ;
134
134
}
135
135
}
136
136
}
137
137
}
138
138
139
139
generatePageUrl ( docId ) {
140
- // Supprime les préfixes courants et génère l' URL propre
140
+ // Deletes common prefixes and generates proper URL
141
141
const cleanId = docId . replace ( / ^ ( d o c s \/ | p a g e s \/ ) / , '' ) ;
142
142
return `${ this . baseUrl } /${ cleanId } ` ;
143
143
}
144
144
145
145
getTitleFromContent ( content ) {
146
- // Extrait le premier h1 du contenu
146
+ // Extracts first h1 from content
147
147
const match = content . match ( / ^ # \s + ( .+ ) $ / m) ;
148
148
return match ? match [ 1 ] . trim ( ) : null ;
149
149
}
150
150
151
151
extractDescription ( content ) {
152
- // Extrait le premier paragraphe non-vide
152
+ // Extracts first non-empty paragraph
153
153
const lines = content . split ( '\n' ) ;
154
154
for ( const line of lines ) {
155
155
const trimmed = line . trim ( ) ;
@@ -162,16 +162,16 @@ class DocusaurusLlmsGenerator {
162
162
163
163
cleanContent ( content ) {
164
164
return content
165
- // Supprime les métadonnées frontmatter
165
+ // Deletes frontmatter metadata
166
166
. replace ( / ^ - - - [ \s \S ] * ?- - - \n / , '' )
167
- // Supprime les composants React/MDX
167
+ // Deletes React/MDX components
168
168
. replace ( / < [ A - Z ] [ a - z A - Z ] * [ ^ > ] * > [ \s \S ] * ?< \/ [ A - Z ] [ a - z A - Z ] * > / g, '' )
169
169
. replace ( / < [ A - Z ] [ a - z A - Z ] * [ ^ > ] * \/ > / g, '' )
170
- // Supprime les imports
170
+ // Deletes imports
171
171
. replace ( / ^ i m p o r t \s + .* $ / gm, '' )
172
- // Supprime les exports
172
+ // Deletes exports
173
173
. replace ( / ^ e x p o r t \s + .* $ / gm, '' )
174
- // Nettoie les lignes vides multiples
174
+ // Cleans up empty lines
175
175
. replace ( / \n \s * \n \s * \n / g, '\n\n' )
176
176
. trim ( ) ;
177
177
}
@@ -204,7 +204,7 @@ class DocusaurusLlmsGenerator {
204
204
205
205
module . exports = DocusaurusLlmsGenerator ;
206
206
207
- // Si le script est exécuté directement
207
+ // If script is not directly executed
208
208
if ( require . main === module ) {
209
209
const generator = new DocusaurusLlmsGenerator ( {
210
210
docsDir : 'docs' ,
@@ -215,4 +215,4 @@ if (require.main === module) {
215
215
} ) ;
216
216
217
217
generator . generate ( ) . catch ( console . error ) ;
218
- }
218
+ }
0 commit comments