[{"data":1,"prerenderedAt":878},["ShallowReactive",2],{"navigation_docs":3,"-advanced-custom-provider":208,"-advanced-custom-provider-surround":873},[4,30,47,195],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Get Started","/get-started","1.get-started",[9,13,17,21,25],{"title":10,"path":11,"stem":12},"Installation","/get-started/installation","1.get-started/1.installation",{"title":14,"path":15,"stem":16},"Configuration","/get-started/configuration","1.get-started/2.configuration",{"title":18,"path":19,"stem":20},"Providers","/get-started/providers","1.get-started/3.providers",{"title":22,"path":23,"stem":24},"Contributing","/get-started/contributing","1.get-started/4.contributing",{"title":26,"path":27,"stem":28},"Migration","/get-started/migration","1.get-started/5.migration",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"Usage","/usage","2.usage",[35,39,43],{"title":36,"path":37,"stem":38},"\u003CNuxtImg>","/usage/nuxt-img","2.usage/1.nuxt-img",{"title":40,"path":41,"stem":42},"\u003CNuxtPicture>","/usage/nuxt-picture","2.usage/2.nuxt-picture",{"title":44,"path":45,"stem":46},"useImage()","/usage/use-image","2.usage/3.use-image",{"title":18,"path":48,"stem":49,"children":50,"page":29},"/providers","3.providers",[51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":52,"path":53,"stem":54},"Aliyun","/providers/aliyun","3.providers/aliyun",{"title":56,"path":57,"stem":58},"AWS Amplify","/providers/aws-amplify","3.providers/aws-amplify",{"title":60,"path":61,"stem":62},"Builder.io","/providers/builderio","3.providers/builderio",{"title":64,"path":65,"stem":66},"Bunny","/providers/bunny","3.providers/bunny",{"title":68,"path":69,"stem":70},"Caisy","/providers/caisy","3.providers/caisy",{"title":72,"path":73,"stem":74},"Cloudflare","/providers/cloudflare","3.providers/cloudflare",{"title":76,"path":77,"stem":78},"Cloudimage","/providers/cloudimage","3.providers/cloudimage",{"title":80,"path":81,"stem":82},"Cloudinary","/providers/cloudinary","3.providers/cloudinary",{"title":84,"path":85,"stem":86},"Contentful","/providers/contentful","3.providers/contentful",{"title":88,"path":89,"stem":90},"Directus","/providers/directus","3.providers/directus",{"title":92,"path":93,"stem":94},"Fastly","/providers/fastly","3.providers/fastly",{"title":96,"path":97,"stem":98},"Filerobot","/providers/filerobot","3.providers/filerobot",{"title":100,"path":101,"stem":102},"GitHub","/providers/github","3.providers/github",{"title":104,"path":105,"stem":106},"Glide","/providers/glide","3.providers/glide",{"title":108,"path":109,"stem":110},"Gumlet","/providers/gumlet","3.providers/gumlet",{"title":112,"path":113,"stem":114},"Hygraph","/providers/hygraph","3.providers/hygraph",{"title":116,"path":117,"stem":118},"ImageEngine","/providers/imageengine","3.providers/imageengine",{"title":120,"path":121,"stem":122},"ImageKit","/providers/imagekit","3.providers/imagekit",{"title":124,"path":125,"stem":126},"Imgix","/providers/imgix","3.providers/imgix",{"title":128,"path":129,"stem":130},"IPX","/providers/ipx","3.providers/ipx",{"title":132,"path":133,"stem":134},"Netlify","/providers/netlify","3.providers/netlify",{"title":136,"path":137,"stem":138},"None","/providers/none","3.providers/none",{"title":140,"path":141,"stem":142},"Picsum","/providers/picsum","3.providers/picsum",{"title":144,"path":145,"stem":146},"Prepr","/providers/prepr","3.providers/prepr",{"title":148,"path":149,"stem":150},"Prismic","/providers/prismic","3.providers/prismic",{"title":152,"path":153,"stem":154},"Sanity","/providers/sanity","3.providers/sanity",{"title":156,"path":157,"stem":158},"Shopify","/providers/shopify","3.providers/shopify",{"title":160,"path":161,"stem":162},"Sirv","/providers/sirv","3.providers/sirv",{"title":164,"path":165,"stem":166},"Storyblok","/providers/storyblok","3.providers/storyblok",{"title":168,"path":169,"stem":170},"Strapi","/providers/strapi","3.providers/strapi",{"title":172,"path":173,"stem":174},"Supabase","/providers/supabase","3.providers/supabase",{"title":176,"path":177,"stem":178},"Twicpics","/providers/twicpics","3.providers/twicpics",{"title":180,"path":181,"stem":182},"Unsplash","/providers/unsplash","3.providers/unsplash",{"title":184,"path":185,"stem":186},"Uploadcare","/providers/uploadcare","3.providers/uploadcare",{"title":188,"path":189,"stem":190},"Vercel","/providers/vercel","3.providers/vercel",{"title":192,"path":193,"stem":194},"Weserv","/providers/weserv","3.providers/weserv",{"title":196,"path":197,"stem":198,"children":199,"page":29},"Advanced","/advanced","4.advanced",[200,204],{"title":201,"path":202,"stem":203},"Custom Provider","/advanced/custom-provider","4.advanced/1.custom-provider",{"title":205,"path":206,"stem":207},"Static Images","/advanced/static-images","4.advanced/2.static-images",{"id":209,"title":201,"body":210,"description":867,"extension":868,"links":869,"meta":870,"navigation":298,"path":202,"seo":871,"stem":203,"__hash__":872},"docs/4.advanced/1.custom-provider.md",{"type":211,"value":212,"toc":857},"minimark",[213,218,222,557,562,607,617,621,629,633,637,647,783,796,799,806,853],[214,215,217],"h2",{"id":216},"provider-entry","Provider Entry",[219,220,221],"p",{},"The runtime will receive a source, image modifiers and its provider options. It is responsible for generating a URL for optimized images, and needs to be isomorphic because it may be called on either server or client.",[223,224,230],"pre",{"className":225,"code":226,"filename":227,"language":228,"meta":229,"style":229},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { joinURL } from 'ufo'\nimport { createOperationsGenerator, defineProvider } from '@nuxt/image/runtime'\n\nconst operationsGenerator = createOperationsGenerator()\n\nexport default defineProvider\u003C{ baseURL?: string }>({\n  getImage (src, { modifiers, baseURL }) {\n    if (!baseURL) {\n      // also support runtime config \n      baseURL = useRuntimeConfig().public.siteUrl\n    }\n\n    const operations = operationsGenerator(modifiers)\n\n    return {\n      url: joinURL(baseURL, src + (operations ? '?' + operations : ''))\n    }\n  }\n})\n","providers/my-provider.ts","ts","",[231,232,233,266,293,300,319,324,358,388,407,414,440,446,451,473,478,486,538,543,549],"code",{"__ignoreMap":229},[234,235,238,242,246,250,253,256,259,263],"span",{"class":236,"line":237},"line",1,[234,239,241],{"class":240},"s7zQu","import",[234,243,245],{"class":244},"sMK4o"," {",[234,247,249],{"class":248},"sTEyZ"," joinURL",[234,251,252],{"class":244}," }",[234,254,255],{"class":240}," from",[234,257,258],{"class":244}," '",[234,260,262],{"class":261},"sfazB","ufo",[234,264,265],{"class":244},"'\n",[234,267,269,271,273,276,279,282,284,286,288,291],{"class":236,"line":268},2,[234,270,241],{"class":240},[234,272,245],{"class":244},[234,274,275],{"class":248}," createOperationsGenerator",[234,277,278],{"class":244},",",[234,280,281],{"class":248}," defineProvider",[234,283,252],{"class":244},[234,285,255],{"class":240},[234,287,258],{"class":244},[234,289,290],{"class":261},"@nuxt/image/runtime",[234,292,265],{"class":244},[234,294,296],{"class":236,"line":295},3,[234,297,299],{"emptyLinePlaceholder":298},true,"\n",[234,301,303,307,310,313,316],{"class":236,"line":302},4,[234,304,306],{"class":305},"spNyl","const",[234,308,309],{"class":248}," operationsGenerator ",[234,311,312],{"class":244},"=",[234,314,275],{"class":315},"s2Zo4",[234,317,318],{"class":248},"()\n",[234,320,322],{"class":236,"line":321},5,[234,323,299],{"emptyLinePlaceholder":298},[234,325,327,330,333,335,338,342,345,349,352,355],{"class":236,"line":326},6,[234,328,329],{"class":240},"export",[234,331,332],{"class":240}," default",[234,334,281],{"class":315},[234,336,337],{"class":244},"\u003C{",[234,339,341],{"class":340},"swJcz"," baseURL",[234,343,344],{"class":244},"?:",[234,346,348],{"class":347},"sBMFI"," string",[234,350,351],{"class":244}," }>",[234,353,354],{"class":248},"(",[234,356,357],{"class":244},"{\n",[234,359,361,364,367,371,373,375,378,380,382,385],{"class":236,"line":360},7,[234,362,363],{"class":340},"  getImage",[234,365,366],{"class":244}," (",[234,368,370],{"class":369},"sHdIc","src",[234,372,278],{"class":244},[234,374,245],{"class":244},[234,376,377],{"class":369}," modifiers",[234,379,278],{"class":244},[234,381,341],{"class":369},[234,383,384],{"class":244}," })",[234,386,387],{"class":244}," {\n",[234,389,391,394,396,399,402,405],{"class":236,"line":390},8,[234,392,393],{"class":240},"    if",[234,395,366],{"class":340},[234,397,398],{"class":244},"!",[234,400,401],{"class":248},"baseURL",[234,403,404],{"class":340},") ",[234,406,357],{"class":244},[234,408,410],{"class":236,"line":409},9,[234,411,413],{"class":412},"sHwdD","      // also support runtime config \n",[234,415,417,420,423,426,429,432,435,437],{"class":236,"line":416},10,[234,418,419],{"class":248},"      baseURL",[234,421,422],{"class":244}," =",[234,424,425],{"class":315}," useRuntimeConfig",[234,427,428],{"class":340},"()",[234,430,431],{"class":244},".",[234,433,434],{"class":248},"public",[234,436,431],{"class":244},[234,438,439],{"class":248},"siteUrl\n",[234,441,443],{"class":236,"line":442},11,[234,444,445],{"class":244},"    }\n",[234,447,449],{"class":236,"line":448},12,[234,450,299],{"emptyLinePlaceholder":298},[234,452,454,457,460,462,465,467,470],{"class":236,"line":453},13,[234,455,456],{"class":305},"    const",[234,458,459],{"class":248}," operations",[234,461,422],{"class":244},[234,463,464],{"class":315}," operationsGenerator",[234,466,354],{"class":340},[234,468,469],{"class":248},"modifiers",[234,471,472],{"class":340},")\n",[234,474,476],{"class":236,"line":475},14,[234,477,299],{"emptyLinePlaceholder":298},[234,479,481,484],{"class":236,"line":480},15,[234,482,483],{"class":240},"    return",[234,485,387],{"class":244},[234,487,489,492,495,497,499,501,503,506,509,511,514,517,519,522,525,527,529,532,535],{"class":236,"line":488},16,[234,490,491],{"class":340},"      url",[234,493,494],{"class":244},":",[234,496,249],{"class":315},[234,498,354],{"class":340},[234,500,401],{"class":248},[234,502,278],{"class":244},[234,504,505],{"class":248}," src",[234,507,508],{"class":244}," +",[234,510,366],{"class":340},[234,512,513],{"class":248},"operations",[234,515,516],{"class":244}," ?",[234,518,258],{"class":244},[234,520,521],{"class":261},"?",[234,523,524],{"class":244},"'",[234,526,508],{"class":244},[234,528,459],{"class":248},[234,530,531],{"class":244}," :",[234,533,534],{"class":244}," ''",[234,536,537],{"class":340},"))\n",[234,539,541],{"class":236,"line":540},17,[234,542,445],{"class":244},[234,544,546],{"class":236,"line":545},18,[234,547,548],{"class":244},"  }\n",[234,550,552,555],{"class":236,"line":551},19,[234,553,554],{"class":244},"}",[234,556,472],{"class":248},[558,559,561],"h3",{"id":560},"parameters","Parameters",[563,564,565,571,576],"ul",{},[566,567,568,570],"li",{},[231,569,370],{},": Source path of the image.",[566,572,573,575],{},[231,574,469],{},": List of image modifiers that are defined in the image component or as a preset.",[566,577,578,581,582,585,586],{},[231,579,580],{},"ctx",": (",[231,583,584],{},"ImageCTX",") Image module runtime context\n",[563,587,588,597],{},[566,589,590,581,593,596],{},[231,591,592],{},"options",[231,594,595],{},"CreateImageOptions",") Image module global runtime options",[566,598,599,602,603],{},[231,600,601],{},"$img",": The ",[604,605,606],"a",{"href":45},"$img helper",[219,608,609,613,614,616],{},[610,611,612],"strong",{},"Note:"," Values in ",[231,615,580],{}," might change. Use it with caution.",[558,618,620],{"id":619},"return","Return",[563,622,623],{},[566,624,625,628],{},[231,626,627],{},"url",": Absolute or relative URL of optimized image.",[214,630,632],{"id":631},"use-your-provider","Use Your Provider",[558,634,636],{"id":635},"register-provider","Register provider",[219,638,639,640,643,644,431],{},"After you create your own provider, you should register it in the ",[231,641,642],{},"nuxt.config",". In order to do that create a property inside ",[231,645,646],{},"image.provider",[223,648,651],{"className":225,"code":649,"filename":650,"language":228,"meta":229,"style":229},"export default defineNuxtConfig({\n  image: {\n    providers: {\n      myProvider: {\n        name: 'myProvider', // optional value to overrider provider name\n        provider: '~/providers/my-provider.ts', // Path to custom provider\n        options: {\n          // ... provider options\n          baseURL: 'https://site.com'\n        }\n      }\n    }\n  }\n})\n","nuxt.config.ts",[231,652,653,666,675,684,693,712,731,740,745,759,764,769,773,777],{"__ignoreMap":229},[234,654,655,657,659,662,664],{"class":236,"line":237},[234,656,329],{"class":240},[234,658,332],{"class":240},[234,660,661],{"class":315}," defineNuxtConfig",[234,663,354],{"class":248},[234,665,357],{"class":244},[234,667,668,671,673],{"class":236,"line":268},[234,669,670],{"class":340},"  image",[234,672,494],{"class":244},[234,674,387],{"class":244},[234,676,677,680,682],{"class":236,"line":295},[234,678,679],{"class":340},"    providers",[234,681,494],{"class":244},[234,683,387],{"class":244},[234,685,686,689,691],{"class":236,"line":302},[234,687,688],{"class":340},"      myProvider",[234,690,494],{"class":244},[234,692,387],{"class":244},[234,694,695,698,700,702,705,707,709],{"class":236,"line":321},[234,696,697],{"class":340},"        name",[234,699,494],{"class":244},[234,701,258],{"class":244},[234,703,704],{"class":261},"myProvider",[234,706,524],{"class":244},[234,708,278],{"class":244},[234,710,711],{"class":412}," // optional value to overrider provider name\n",[234,713,714,717,719,721,724,726,728],{"class":236,"line":326},[234,715,716],{"class":340},"        provider",[234,718,494],{"class":244},[234,720,258],{"class":244},[234,722,723],{"class":261},"~/providers/my-provider.ts",[234,725,524],{"class":244},[234,727,278],{"class":244},[234,729,730],{"class":412}," // Path to custom provider\n",[234,732,733,736,738],{"class":236,"line":360},[234,734,735],{"class":340},"        options",[234,737,494],{"class":244},[234,739,387],{"class":244},[234,741,742],{"class":236,"line":390},[234,743,744],{"class":412},"          // ... provider options\n",[234,746,747,750,752,754,757],{"class":236,"line":409},[234,748,749],{"class":340},"          baseURL",[234,751,494],{"class":244},[234,753,258],{"class":244},[234,755,756],{"class":261},"https://site.com",[234,758,265],{"class":244},[234,760,761],{"class":236,"line":416},[234,762,763],{"class":244},"        }\n",[234,765,766],{"class":236,"line":442},[234,767,768],{"class":244},"      }\n",[234,770,771],{"class":236,"line":448},[234,772,445],{"class":244},[234,774,775],{"class":236,"line":453},[234,776,548],{"class":244},[234,778,779,781],{"class":236,"line":475},[234,780,554],{"class":244},[234,782,472],{"class":248},[219,784,785,786,788,789,795],{},"There are plenty of useful utilities that can be used to write providers by importing from ",[231,787,290],{},". See ",[604,790,794],{"href":791,"rel":792},"https://github.com/nuxt/image/tree/main/src/runtime/providers",[793],"nofollow","src/runtime/providers"," for more info.",[558,797,31],{"id":798},"usage",[219,800,801,802,805],{},"Set attribute ",[231,803,804],{},"provider"," as your custom provider name.",[223,807,812],{"className":808,"code":809,"filename":810,"language":811,"meta":229,"style":229},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003CNuxtImg provider=\"myProvider\" src=\"/image.png\" >\n\u003C!-- \u003Cimg src=\"https://site.com/image.png\"> -->\n","pages/index.vue","vue",[231,813,814,848],{"__ignoreMap":229},[234,815,816,819,822,825,827,830,832,834,836,838,840,843,845],{"class":236,"line":237},[234,817,818],{"class":244},"\u003C",[234,820,821],{"class":340},"NuxtImg",[234,823,824],{"class":305}," provider",[234,826,312],{"class":244},[234,828,829],{"class":244},"\"",[234,831,704],{"class":261},[234,833,829],{"class":244},[234,835,505],{"class":305},[234,837,312],{"class":244},[234,839,829],{"class":244},[234,841,842],{"class":261},"/image.png",[234,844,829],{"class":244},[234,846,847],{"class":244}," >\n",[234,849,850],{"class":236,"line":268},[234,851,852],{"class":248},"\u003C!-- \u003Cimg src=\"https://site.com/image.png\"> -->\n",[854,855,856],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":229,"searchDepth":268,"depth":268,"links":858},[859,863],{"id":216,"depth":268,"text":217,"children":860},[861,862],{"id":560,"depth":295,"text":561},{"id":619,"depth":295,"text":620},{"id":631,"depth":268,"text":632,"children":864},[865,866],{"id":635,"depth":295,"text":636},{"id":798,"depth":295,"text":31},"If a CDN provider is not supported, you can define it yourself.","md",null,{},{"title":201,"description":867},"tZOb1AetQMma3qdsTdgIA0sXN9aexpcI5iNm-bdaOGo",[874,876],{"title":192,"path":193,"stem":194,"description":875,"children":-1},"Optimize images with Weserv's dynamic image transformation service.",{"title":205,"path":206,"stem":207,"description":877,"children":-1},"Optimizing images for static websites.",1770634604763]