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