@@ -54,11 +54,18 @@ export function configureSvelteKitOptions(
5454 if ( ! config . modifyURLPrefix )
5555 config . globPatterns = buildGlobPatterns ( config . globPatterns )
5656
57- if ( ! config . manifestTransforms )
58- config . manifestTransforms = [ createManifestTransform ( base , kit ) ]
57+ if ( ! config . manifestTransforms ) {
58+ config . manifestTransforms = [ createManifestTransform (
59+ base ,
60+ options . strategies === 'injectManifest'
61+ ? undefined
62+ : ( options . manifestFilename ?? 'manifest.webmanifest' ) ,
63+ kit ,
64+ ) ]
65+ }
5966}
6067
61- function createManifestTransform ( base : string , options ?: KitOptions ) : ManifestTransform {
68+ function createManifestTransform ( base : string , webManifestName ?: string , options ?: KitOptions ) : ManifestTransform {
6269 return async ( entries ) => {
6370 const defaultAdapterFallback = 'prerendered/fallback.html'
6471 const suffix = options ?. trailingSlash === 'always' ? '/' : ''
@@ -72,50 +79,55 @@ function createManifestTransform(base: string, options?: KitOptions): ManifestTr
7279 }
7380
7481 // the fallback will be always in .svelte-kit/output/prerendered/fallback.html
75- const manifest = entries . filter ( ( { url } ) => ! ( excludeFallback && url === defaultAdapterFallback ) ) . map ( ( e ) => {
76- let url = e . url
77- // client assets in `.svelte-kit/output/client` folder.
78- // SSG pages in `.svelte-kit/output/prerendered/pages` folder.
79- // fallback page in `.svelte-kit/output/prerendered` folder (fallback.html is the default).
80- if ( url . startsWith ( 'client/' ) )
81- url = url . slice ( 7 )
82-
83- else if ( url . startsWith ( 'prerendered/pages/' ) )
84- url = url . slice ( 18 )
85-
86- else if ( url === defaultAdapterFallback )
87- url = adapterFallback !
88-
89- if ( url . endsWith ( '.html' ) ) {
90- if ( url . startsWith ( '/' ) )
91- url = url . slice ( 1 )
92-
93- if ( url === 'index.html' ) {
94- url = base
95- }
96- else {
97- const idx = url . lastIndexOf ( '/' )
98- if ( idx > - 1 ) {
99- // abc/index.html -> abc/?
100- if ( url . endsWith ( '/index.html' ) )
101- url = `${ url . slice ( 0 , idx ) } ${ suffix } `
102- // abc/def.html -> abc/def/?
103- else
104- url = `${ url . substring ( 0 , url . lastIndexOf ( '.' ) ) } ${ suffix } `
82+ const manifest = entries
83+ . filter ( ( { url } ) => ! ( excludeFallback && url === defaultAdapterFallback ) )
84+ . map ( ( e ) => {
85+ let url = e . url
86+ // client assets in `.svelte-kit/output/client` folder.
87+ // SSG pages in `.svelte-kit/output/prerendered/pages` folder.
88+ // fallback page in `.svelte-kit/output/prerendered` folder (fallback.html is the default).
89+ if ( url . startsWith ( 'client/' ) )
90+ url = url . slice ( 7 )
91+
92+ else if ( url . startsWith ( 'prerendered/pages/' ) )
93+ url = url . slice ( 18 )
94+
95+ else if ( url === defaultAdapterFallback )
96+ url = adapterFallback !
97+
98+ if ( url . endsWith ( '.html' ) ) {
99+ if ( url . startsWith ( '/' ) )
100+ url = url . slice ( 1 )
101+
102+ if ( url === 'index.html' ) {
103+ url = base
105104 }
106105 else {
106+ const idx = url . lastIndexOf ( '/' )
107+ if ( idx > - 1 ) {
108+ // abc/index.html -> abc/?
109+ if ( url . endsWith ( '/index.html' ) )
110+ url = `${ url . slice ( 0 , idx ) } ${ suffix } `
111+ // abc/def.html -> abc/def/?
112+ else
113+ url = `${ url . substring ( 0 , url . lastIndexOf ( '.' ) ) } ${ suffix } `
114+ }
115+ else {
107116 // xxx.html -> xxx/?
108- url = `${ url . substring ( 0 , url . lastIndexOf ( '.' ) ) } ${ suffix } `
117+ url = `${ url . substring ( 0 , url . lastIndexOf ( '.' ) ) } ${ suffix } `
118+ }
109119 }
110120 }
111- }
112121
113- e . url = url
122+ e . url = url
123+
124+ return e
125+ } )
114126
115- return e
116- } )
127+ if ( ! webManifestName )
128+ return { manifest }
117129
118- return { manifest }
130+ return { manifest : manifest . filter ( e => e . url !== webManifestName ) }
119131 }
120132}
121133
0 commit comments