[{"data":1,"prerenderedAt":323},["ShallowReactive",2],{"navigation_docs":3,"diagnostic-content-VITE0024":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,"code":313,"description":314,"docsUrl":54,"extension":315,"fix":77,"framework":316,"meta":317,"navigation":318,"pack":56,"path":319,"ruleId":57,"rulePath":58,"seo":320,"severity":59,"source":60,"sourceUrl":61,"stem":321,"why":70,"__hash__":322},"diagnostics\u002Fdiagnostics\u002FVITE0024.md","VITE0024: Follow Vite plugin package naming conventions",{"type":48,"value":49,"toc":303},"minimark",[50,62,67,71,75,78,82,87,90,168,171,233,237,240,271,275,287,291,299],[51,52],"rule-metadata",{"category":53,"docsUrl":54,"fix":55,"pack":56,"ruleId":57,"rulePath":58,"severity":59,"source":60,"sourceUrl":61},"plugins","https:\u002F\u002Fvite.dev\u002Fguide\u002Fapi-plugin#conventions","no","vite-doctor\u002Fvite","vite\u002Fplugin-package\u002Fnaming-conventions","\u002Fvite\u002Frules\u002Fplugin-package\u002Fnaming-conventions","warn","src\u002Frule-packs\u002Fvite\u002Frules\u002Fplugin-package.ts","https:\u002F\u002Fgithub.com\u002Fonmax\u002Fvite-doctor\u002Fblob\u002Fmain\u002Fsrc\u002Frule-packs\u002Fvite\u002Frules\u002Fplugin-package.ts",[63,64,66],"h2",{"id":65},"why-it-happens","Why it happens",[68,69,70],"p",{},"Vite's plugin conventions ask Vite-only plugins to use the vite-plugin- prefix and the vite-plugin keyword. Plugins that only work with Vue, React, or Svelte should put the framework in the prefix, as in vite-plugin-vue-. Plugins that also work with Rolldown should use the rolldown-plugin- prefix and the rolldown-plugin and vite-plugin keywords; Vite 7 and earlier gave the same guidance for rollup-plugin- packages. These names and keywords are how users find plugins on npm and recognize what a package works with. The Rule runs only on a public package (not private and without bin) that declares vite as a required peer dependency and whose main entry exports a function returning a Vite plugin. Scoped packages are exempt from the prefix checks because Vite's conventions do not define a scoped form; they still need the keywords. The plugin object's name property is not checked: the conventions say nothing about its format, and vite\u002Fplugin\u002Frequire-name already reports a missing name.",[63,72,74],{"id":73},"fix","Fix",[68,76,77],{},"Add the \"vite-plugin\" keyword, plus \"rolldown-plugin\" or \"rollup-plugin\" for packages with those prefixes. Use the vite-plugin- prefix, or vite-plugin-vue-, vite-plugin-react-, or vite-plugin-svelte- for framework-specific plugins. Renaming an already published package means publishing under the new name and deprecating the old one.",[63,79,81],{"id":80},"example","Example",[83,84,86],"h3",{"id":85},"use-the-vite-plugin-prefix-and-keyword","Use the Vite plugin prefix and keyword",[68,88,89],{},"Before",[91,92,97],"pre",{"className":93,"code":94,"language":95,"meta":96,"style":96},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"name\": \"my-icons\",\n  \"keywords\": [\"icons\"]\n}\n","json","",[98,99,100,109,137,162],"code",{"__ignoreMap":96},[101,102,105],"span",{"class":103,"line":104},"line",1,[101,106,108],{"class":107},"sMK4o","{\n",[101,110,112,115,119,122,125,128,132,134],{"class":103,"line":111},2,[101,113,114],{"class":107},"  \"",[101,116,118],{"class":117},"spNyl","name",[101,120,121],{"class":107},"\"",[101,123,124],{"class":107},":",[101,126,127],{"class":107}," \"",[101,129,131],{"class":130},"sfazB","my-icons",[101,133,121],{"class":107},[101,135,136],{"class":107},",\n",[101,138,140,142,145,147,149,152,154,157,159],{"class":103,"line":139},3,[101,141,114],{"class":107},[101,143,144],{"class":117},"keywords",[101,146,121],{"class":107},[101,148,124],{"class":107},[101,150,151],{"class":107}," [",[101,153,121],{"class":107},[101,155,156],{"class":130},"icons",[101,158,121],{"class":107},[101,160,161],{"class":107},"]\n",[101,163,165],{"class":103,"line":164},4,[101,166,167],{"class":107},"}\n",[68,169,170],{},"After",[91,172,174],{"className":93,"code":173,"language":95,"meta":96,"style":96},"{\n  \"name\": \"vite-plugin-icons\",\n  \"keywords\": [\"vite-plugin\", \"icons\"]\n}\n",[98,175,176,180,199,229],{"__ignoreMap":96},[101,177,178],{"class":103,"line":104},[101,179,108],{"class":107},[101,181,182,184,186,188,190,192,195,197],{"class":103,"line":111},[101,183,114],{"class":107},[101,185,118],{"class":117},[101,187,121],{"class":107},[101,189,124],{"class":107},[101,191,127],{"class":107},[101,193,194],{"class":130},"vite-plugin-icons",[101,196,121],{"class":107},[101,198,136],{"class":107},[101,200,201,203,205,207,209,211,213,216,218,221,223,225,227],{"class":103,"line":139},[101,202,114],{"class":107},[101,204,144],{"class":117},[101,206,121],{"class":107},[101,208,124],{"class":107},[101,210,151],{"class":107},[101,212,121],{"class":107},[101,214,215],{"class":130},"vite-plugin",[101,217,121],{"class":107},[101,219,220],{"class":107},",",[101,222,127],{"class":107},[101,224,156],{"class":130},[101,226,121],{"class":107},[101,228,161],{"class":107},[101,230,231],{"class":103,"line":164},[101,232,167],{"class":107},[63,234,236],{"id":235},"verify-the-fix","Verify the fix",[68,238,239],{},"Run only this rule after editing so the report stays focused on the diagnostic you are closing:",[91,241,245],{"className":242,"code":243,"language":244,"meta":96,"style":96},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","pnpm vite-doctor . --framework vite --rules vite\u002Fplugin-package\u002Fnaming-conventions\n","bash",[98,246,247],{"__ignoreMap":96},[101,248,249,253,256,259,262,265,268],{"class":103,"line":104},[101,250,252],{"class":251},"sBMFI","pnpm",[101,254,255],{"class":130}," vite-doctor",[101,257,258],{"class":130}," .",[101,260,261],{"class":130}," --framework",[101,263,264],{"class":130}," vite",[101,266,267],{"class":130}," --rules",[101,269,270],{"class":130}," vite\u002Fplugin-package\u002Fnaming-conventions\n",[63,272,274],{"id":273},"useful-links","Useful links",[276,277,278],"ul",{},[279,280,281],"li",{},[282,283,286],"a",{"href":54,"rel":284},[285],"nofollow","Upstream docs",[63,288,290],{"id":289},"related-rule","Related rule",[276,292,293],{},[279,294,295],{},[282,296,297],{"href":58},[98,298,57],{},[300,301,302],"style",{},"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":96,"searchDepth":111,"depth":111,"links":304},[305,306,307,310,311,312],{"id":65,"depth":111,"text":66},{"id":73,"depth":111,"text":74},{"id":80,"depth":111,"text":81,"children":308},[309],{"id":85,"depth":139,"text":86},{"id":235,"depth":111,"text":236},{"id":273,"depth":111,"text":274},{"id":289,"depth":111,"text":290},"VITE0024","Checks that a published Vite plugin package uses the package name prefix and package.json keywords from Vite's plugin conventions.","md","vite",{},true,"\u002Fdiagnostics\u002Fvite0024",{"title":46,"description":314},"diagnostics\u002FVITE0024","cpFa8Ii3zfR9x2ahbNp-gJq3CtHfFOGIY2PuGkghqOI",1791309486791]