[{"data":1,"prerenderedAt":854},["ShallowReactive",2],{"navigation":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,"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,532,537,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 '#image'\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,367,386,393,419,425,430,447,452,460,513,518,524],"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},"#image",[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,364],{"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":281}," =>",[210,365,366],{"class":220}," {\n",[210,368,370,373,375,378,381,384],{"class":212,"line":369},8,[210,371,372],{"class":316},"    if",[210,374,342],{"class":220},[210,376,377],{"class":224},"!",[210,379,380],{"class":345},"baseURL",[210,382,383],{"class":220},")",[210,385,366],{"class":220},[210,387,389],{"class":212,"line":388},9,[210,390,392],{"class":391},"sHwdD","      // also support runtime config \n",[210,394,396,399,402,405,408,411,414,416],{"class":212,"line":395},10,[210,397,398],{"class":224},"      baseURL",[210,400,401],{"class":220}," =",[210,403,404],{"class":291}," useRuntimeConfig",[210,406,407],{"class":316},"()",[210,409,410],{"class":220},".",[210,412,413],{"class":224},"public",[210,415,410],{"class":220},[210,417,418],{"class":224},"siteUrl\n",[210,420,422],{"class":212,"line":421},11,[210,423,424],{"class":220},"    }\n",[210,426,428],{"class":212,"line":427},12,[210,429,275],{"emptyLinePlaceholder":274},[210,431,433,436,439,441,444],{"class":212,"line":432},13,[210,434,435],{"class":323},"    const",[210,437,438],{"class":316}," operations",[210,440,401],{"class":220},[210,442,443],{"class":316}," operationsGenerator",[210,445,446],{"class":224},"(modifiers)\n",[210,448,450],{"class":212,"line":449},14,[210,451,275],{"emptyLinePlaceholder":274},[210,453,455,458],{"class":212,"line":454},15,[210,456,457],{"class":323},"    return",[210,459,366],{"class":220},[210,461,463,466,469,471,473,475,477,480,483,486,489,491,494,497,500,502,505,508,510],{"class":212,"line":462},16,[210,464,465],{"class":316},"      url",[210,467,468],{"class":220},":",[210,470,225],{"class":323},[210,472,330],{"class":220},[210,474,380],{"class":345},[210,476,254],{"class":220},[210,478,479],{"class":345}," src",[210,481,482],{"class":224}," + (",[210,484,485],{"class":345},"operations",[210,487,488],{"class":220}," ?",[210,490,234],{"class":220},[210,492,493],{"class":237},"?",[210,495,496],{"class":220},"'",[210,498,499],{"class":224}," + ",[210,501,485],{"class":345},[210,503,504],{"class":220}," :",[210,506,507],{"class":220}," ''",[210,509,383],{"class":220},[210,511,512],{"class":224},")\n",[210,514,516],{"class":212,"line":515},17,[210,517,424],{"class":220},[210,519,521],{"class":212,"line":520},18,[210,522,523],{"class":220},"  }\n",[210,525,527,530],{"class":212,"line":526},19,[210,528,529],{"class":220},"}",[210,531,512],{"class":224},[533,534,536],"h3",{"id":535},"parameters","Parameters",[538,539,540,546,552],"ul",{},[541,542,543,545],"li",{},[207,544,346],{},": Source path of the image.",[541,547,548,551],{},[207,549,550],{},"modifiers",": List of image modifiers that are defined in the image component or as a preset.",[541,553,554,557,558,561,562],{},[207,555,556],{},"ctx",": (",[207,559,560],{},"ImageCTX",") Image module runtime context\n",[538,563,564,573],{},[541,565,566,557,569,572],{},[207,567,568],{},"options",[207,570,571],{},"CreateImageOptions",") Image module global runtime options",[541,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.",[533,594,596],{"id":595},"return","Return",[538,598,599],{},[541,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",[533,610,612],{"id":611},"register-provider","Register provider",[195,614,615,616,619,620,410],{},"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,468],{"class":220},[210,650,366],{"class":220},[210,652,653,656,658],{"class":212,"line":271},[210,654,655],{"class":316},"    providers",[210,657,468],{"class":220},[210,659,366],{"class":220},[210,661,662,665,667],{"class":212,"line":278},[210,663,664],{"class":316},"      myProvider",[210,666,468],{"class":220},[210,668,366],{"class":220},[210,670,671,674,676,678,681,683,685],{"class":212,"line":297},[210,672,673],{"class":316},"        name",[210,675,468],{"class":220},[210,677,234],{"class":220},[210,679,680],{"class":237},"myProvider",[210,682,496],{"class":220},[210,684,254],{"class":220},[210,686,687],{"class":391}," // 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,468],{"class":220},[210,696,234],{"class":220},[210,698,699],{"class":237},"~/providers/my-provider.ts",[210,701,496],{"class":220},[210,703,254],{"class":220},[210,705,706],{"class":391}," // Path to custom provider\n",[210,708,709,712,714],{"class":212,"line":336},[210,710,711],{"class":316},"        options",[210,713,468],{"class":220},[210,715,366],{"class":220},[210,717,718],{"class":212,"line":369},[210,719,720],{"class":391},"          // ... provider options\n",[210,722,723,726,728,730,733],{"class":212,"line":388},[210,724,725],{"class":316},"          baseURL",[210,727,468],{"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":395},[210,738,739],{"class":220},"        }\n",[210,741,742],{"class":212,"line":421},[210,743,744],{"class":220},"      }\n",[210,746,747],{"class":212,"line":427},[210,748,424],{"class":220},[210,750,751],{"class":212,"line":432},[210,752,523],{"class":220},[210,754,755,757],{"class":212,"line":449},[210,756,529],{"class":220},[210,758,512],{"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.",[533,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,479],{"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":535,"depth":271,"text":536},{"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},"XCTSE7ipHHSkOCKb-jG1cdvxDvSRDGypdIpLYjcGPq0",[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.",1753877277818]