@@ -91,16 +91,49 @@ export default defineConfig({
91
91
sitemap : {
92
92
hostname,
93
93
transformItems ( items ) {
94
- return items . map ( ( item ) => {
95
- if ( item . url . includes ( "api/" ) || item . url . includes ( "cli/" ) ) {
96
- item = {
97
- ...item ,
98
- lastmod : undefined
99
- } ;
94
+ function priorityMatch ( a : { url : string } , b : { url : string } , matchers : ( ( url : string ) => boolean ) [ ] ) : number {
95
+ for ( const matcher of matchers ) {
96
+ const aMatch = matcher ( a . url ) ;
97
+ const bMatch = matcher ( b . url ) ;
98
+
99
+ if ( aMatch && ! bMatch )
100
+ return - 1 ;
101
+ else if ( ! aMatch && bMatch )
102
+ return 1 ;
100
103
}
101
104
102
- return item ;
103
- } ) ;
105
+ return 0 ;
106
+ }
107
+
108
+ return items
109
+ . map ( ( item ) => {
110
+ if ( item . url . startsWith ( "api/" ) || item . url . startsWith ( "cli/" ) ) {
111
+ item = {
112
+ ...item ,
113
+ lastmod : undefined
114
+ } ;
115
+ }
116
+
117
+ return item ;
118
+ } )
119
+ . sort ( ( a , b ) => {
120
+ return priorityMatch ( a , b , [
121
+ ( url ) => url === "" ,
122
+ ( url ) => url === "blog/" ,
123
+ ( url ) => url . startsWith ( "blog/" ) ,
124
+ ( url ) => url === "guide/" ,
125
+ ( url ) => url . startsWith ( "guide/" ) ,
126
+ ( url ) => url === "cli/" ,
127
+ ( url ) => url . startsWith ( "cli/" ) ,
128
+ ( url ) => url === "api/" ,
129
+ ( url ) => url . startsWith ( "api/functions/" ) ,
130
+ ( url ) => url . startsWith ( "api/classes/" ) ,
131
+ ( url ) => url . startsWith ( "api/type-aliases/" ) ,
132
+ ( url ) => url . startsWith ( "api/enumerations/" ) ,
133
+ ( url ) => url . startsWith ( "api/variables/" ) ,
134
+ ( url ) => url . startsWith ( "api/" )
135
+ ] ) ;
136
+ } ) ;
104
137
}
105
138
} ,
106
139
head : [
0 commit comments