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