[{"data":1,"prerenderedAt":320},["ShallowReactive",2],{"navigation_docs":3,"rule-content-\u002Fnuxt\u002Frules\u002Fmodule\u002Fexplicit-runtime-imports":44},[4,8,12,16,20,24,28,32,36,40],{"title":5,"path":6,"stem":7},"CLI","\u002Fcli","1.cli",{"title":9,"path":10,"stem":11},"Nuxt","\u002Fnuxt","2.nuxt",{"title":13,"path":14,"stem":15},"Vue","\u002Fvue","3.vue",{"title":17,"path":18,"stem":19},"Vite","\u002Fvite","4.vite",{"title":21,"path":22,"stem":23},"Nitro","\u002Fnitro","5.nitro",{"title":25,"path":26,"stem":27},"TypeScript","\u002Ftypescript","6.typescript",{"title":29,"path":30,"stem":31},"shadcn","\u002Fshadcn","7.shadcn",{"title":33,"path":34,"stem":35},"Package","\u002Fpackage","8.package",{"title":37,"path":38,"stem":39},"Extending Doctor","\u002Fextending","9.extending",{"title":41,"path":42,"stem":43},"Pinia","\u002Fpinia","9.pinia",{"id":45,"title":46,"body":47,"category":53,"description":309,"diagnosticCodes":310,"docsUrl":55,"extension":311,"fix":56,"framework":312,"meta":313,"navigation":314,"pack":57,"path":316,"recommendedReplacement":113,"ruleId":58,"seo":317,"severity":59,"source":60,"sourceUrl":61,"stem":318,"why":106,"__hash__":319},"rules\u002Fnuxt\u002Frules\u002Fmodule\u002Fexplicit-runtime-imports.md","Import Nuxt helpers explicitly in module runtime files",{"type":48,"value":49,"toc":300},"minimark",[50,62,67,99,103,107,111,114,118,130,134,139,142,212,215,296],[51,52],"rule-metadata",{"category":53,"diagnosticCodes":54,"docsUrl":55,"fix":56,"pack":57,"ruleId":58,"severity":59,"source":60,"sourceUrl":61},"modules","NUXT0083","https:\u002F\u002Fnuxt.com\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy#add-runtime-code","safe","vite-doctor\u002Fnuxt","nuxt\u002Fmodule\u002Fexplicit-runtime-imports","error","src\u002Frule-packs\u002Fnuxt\u002Frules\u002Fnuxt\u002Fmodule-explicit-runtime-imports.ts","https:\u002F\u002Fgithub.com\u002Fonmax\u002Fvite-doctor\u002Fblob\u002Fmain\u002Fsrc\u002Frule-packs\u002Fnuxt\u002Frules\u002Fnuxt\u002Fmodule-explicit-runtime-imports.ts",[63,64,66],"h2",{"id":65},"run-this-rule","Run this rule",[68,69,74],"pre",{"className":70,"code":71,"language":72,"meta":73,"style":73},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm nuxt doctor --rules nuxt\u002Fmodule\u002Fexplicit-runtime-imports\n","bash","",[75,76,77],"code",{"__ignoreMap":73},[78,79,82,86,90,93,96],"span",{"class":80,"line":81},"line",1,[78,83,85],{"class":84},"sBMFI","pnpm",[78,87,89],{"class":88},"sfazB"," nuxt",[78,91,92],{"class":88}," doctor",[78,94,95],{"class":88}," --rules",[78,97,98],{"class":88}," nuxt\u002Fmodule\u002Fexplicit-runtime-imports\n",[63,100,102],{"id":101},"why-it-matters","Why it matters",[104,105,106],"p",{},"Nuxt and Nitro skip auto-import transforms for files inside node_modules, where a published module's runtime directory lives. The module playground links the source, so auto-imports work during development and the missing import only fails as a ReferenceError in projects that install the module. Doctor checks files under the runtime directory next to the module entry, such as src\u002Fruntime\u002F, and skips local modules and packages that are also Nuxt layers because Nuxt still transforms those.",[63,108,110],{"id":109},"recommended-fix","Recommended fix",[104,112,113],{},"Import runtime helpers explicitly from #imports, or from their source package such as vue or h3.",[63,115,117],{"id":116},"useful-links","Useful links",[119,120,121],"ul",{},[122,123,124],"li",{},[125,126,129],"a",{"href":55,"rel":127},[128],"nofollow","Rule reference",[63,131,133],{"id":132},"example","Example",[135,136,138],"h3",{"id":137},"import-runtime-helpers-in-a-module-plugin","Import runtime helpers in a module plugin",[104,140,141],{},"Before",[68,143,147],{"className":144,"code":145,"language":146,"meta":73,"style":73},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F src\u002Fruntime\u002Fplugin.ts\nexport default defineNuxtPlugin(() => {\n  const config = useRuntimeConfig()\n})\n","ts",[75,148,149,155,184,203],{"__ignoreMap":73},[78,150,151],{"class":80,"line":81},[78,152,154],{"class":153},"sHwdD","\u002F\u002F src\u002Fruntime\u002Fplugin.ts\n",[78,156,158,162,165,169,173,177,181],{"class":80,"line":157},2,[78,159,161],{"class":160},"s7zQu","export",[78,163,164],{"class":160}," default",[78,166,168],{"class":167},"s2Zo4"," defineNuxtPlugin",[78,170,172],{"class":171},"sTEyZ","(",[78,174,176],{"class":175},"sMK4o","()",[78,178,180],{"class":179},"spNyl"," =>",[78,182,183],{"class":175}," {\n",[78,185,187,190,193,196,199],{"class":80,"line":186},3,[78,188,189],{"class":179},"  const",[78,191,192],{"class":171}," config",[78,194,195],{"class":175}," =",[78,197,198],{"class":167}," useRuntimeConfig",[78,200,202],{"class":201},"swJcz","()\n",[78,204,206,209],{"class":80,"line":205},4,[78,207,208],{"class":175},"}",[78,210,211],{"class":171},")\n",[104,213,214],{},"After",[68,216,218],{"className":144,"code":217,"language":146,"meta":73,"style":73},"\u002F\u002F src\u002Fruntime\u002Fplugin.ts\nimport { defineNuxtPlugin, useRuntimeConfig } from '#imports'\n\nexport default defineNuxtPlugin(() => {\n  const config = useRuntimeConfig()\n})\n",[75,219,220,224,254,260,276,289],{"__ignoreMap":73},[78,221,222],{"class":80,"line":81},[78,223,154],{"class":153},[78,225,226,229,232,234,237,239,242,245,248,251],{"class":80,"line":157},[78,227,228],{"class":160},"import",[78,230,231],{"class":175}," {",[78,233,168],{"class":171},[78,235,236],{"class":175},",",[78,238,198],{"class":171},[78,240,241],{"class":175}," }",[78,243,244],{"class":160}," from",[78,246,247],{"class":175}," '",[78,249,250],{"class":88},"#imports",[78,252,253],{"class":175},"'\n",[78,255,256],{"class":80,"line":186},[78,257,259],{"emptyLinePlaceholder":258},true,"\n",[78,261,262,264,266,268,270,272,274],{"class":80,"line":205},[78,263,161],{"class":160},[78,265,164],{"class":160},[78,267,168],{"class":167},[78,269,172],{"class":171},[78,271,176],{"class":175},[78,273,180],{"class":179},[78,275,183],{"class":175},[78,277,279,281,283,285,287],{"class":80,"line":278},5,[78,280,189],{"class":179},[78,282,192],{"class":171},[78,284,195],{"class":175},[78,286,198],{"class":167},[78,288,202],{"class":201},[78,290,292,294],{"class":80,"line":291},6,[78,293,208],{"class":175},[78,295,211],{"class":171},[297,298,299],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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);}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 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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":73,"searchDepth":157,"depth":157,"links":301},[302,303,304,305,306],{"id":65,"depth":157,"text":66},{"id":101,"depth":157,"text":102},{"id":109,"depth":157,"text":110},{"id":116,"depth":157,"text":117},{"id":132,"depth":157,"text":133,"children":307},[308],{"id":137,"depth":186,"text":138},"Finds runtime files of a published Nuxt module package that call Nuxt, Vue, Nitro, or h3 auto-imports without importing them.",[54],"md","nuxt",{},{"title":315},"Runtime imports","\u002Fnuxt\u002Frules\u002Fmodule\u002Fexplicit-runtime-imports",{"title":46,"description":309},"nuxt\u002Frules\u002Fmodule\u002Fexplicit-runtime-imports","SHIt2GE0CviBa6nQooixQeVQABjiCYw6EylRVb5MQww",1791309474320]