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