@@ -91,16 +91,49 @@ export default defineConfig({
9191 sitemap : {
9292 hostname,
9393 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 ;
100103 }
101104
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+ } ) ;
104137 }
105138 } ,
106139 head : [
0 commit comments