[{"data":1,"prerenderedAt":874},["ShallowReactive",2],{"navigation_docs":3,"-guide-production-builds":60,"-guide-production-builds-surround":869},[4,15,40,50],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10],{"title":11,"path":12,"stem":13,"icon":14},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F1.quick-start","i-lucide-rocket",{"title":16,"path":17,"stem":18,"children":19,"page":6},"Guide","\u002Fguide","2.guide",[20,25,30,35],{"title":21,"path":22,"stem":23,"icon":24},"Defining diagnostics","\u002Fguide\u002Fdefining-diagnostics","2.guide\u002F1.defining-diagnostics","i-lucide-list-tree",{"title":26,"path":27,"stem":28,"icon":29},"Reporters and formatters","\u002Fguide\u002Freporters-and-formatters","2.guide\u002F2.reporters-and-formatters","i-lucide-share-2",{"title":31,"path":32,"stem":33,"icon":34},"Production builds","\u002Fguide\u002Fproduction-builds","2.guide\u002F3.production-builds","i-lucide-scissors",{"title":36,"path":37,"stem":38,"icon":39},"Dev collector","\u002Fguide\u002Fdev-collector","2.guide\u002F4.dev-collector","i-lucide-terminal",{"title":41,"path":42,"stem":43,"children":44,"page":6},"Recipes","\u002Frecipes","3.recipes",[45],{"title":46,"path":47,"stem":48,"icon":49},"Diagnostic registry","\u002Frecipes\u002Fdiagnostic-registry","3.recipes\u002F1.diagnostic-registry","i-lucide-book-open",{"title":51,"path":52,"stem":53,"children":54,"page":6},"Api","\u002Fapi","4.api",[55],{"title":56,"path":57,"stem":58,"icon":59},"Reference","\u002Fapi\u002Freference","4.api\u002F1.reference","i-lucide-file-code",{"id":61,"title":31,"body":62,"description":862,"extension":863,"links":864,"meta":865,"navigation":866,"path":32,"seo":867,"stem":33,"__hash__":868},"docs\u002F2.guide\u002F3.production-builds.md",{"type":63,"value":64,"toc":854},"minimark",[65,69,76,81,84,206,212,317,337,341,348,421,424,442,445,489,492,496,499,502,534,537,600,603,607,610,671,709,712,731,735,774,812,816,819,842,850],[66,67,68],"p",{},"Diagnostic catalogs contain user-facing text. That text is useful during development, but you often do not want report-only diagnostics in a production bundle.",[66,70,71,75],{},[72,73,74],"code",{},"nosticsStrip"," is a build-time plugin for that.",[77,78,80],"h2",{"id":79},"setup","Setup",[66,82,83],{},"Vite:",[85,86,92],"pre",{"className":87,"code":88,"filename":89,"language":90,"meta":91,"style":91},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { nosticsStrip } from 'nostics\u002Funplugin\u002Fstrip-transform'\nimport { defineConfig } from 'vite'\n\nexport default defineConfig({\n  plugins: [nosticsStrip.vite()],\n})\n","vite.config.ts","ts","",[72,93,94,127,148,155,173,197],{"__ignoreMap":91},[95,96,99,103,107,111,114,117,120,124],"span",{"class":97,"line":98},"line",1,[95,100,102],{"class":101},"s7zQu","import",[95,104,106],{"class":105},"sMK4o"," {",[95,108,110],{"class":109},"sTEyZ"," nosticsStrip",[95,112,113],{"class":105}," }",[95,115,116],{"class":101}," from",[95,118,119],{"class":105}," '",[95,121,123],{"class":122},"sfazB","nostics\u002Funplugin\u002Fstrip-transform",[95,125,126],{"class":105},"'\n",[95,128,130,132,134,137,139,141,143,146],{"class":97,"line":129},2,[95,131,102],{"class":101},[95,133,106],{"class":105},[95,135,136],{"class":109}," defineConfig",[95,138,113],{"class":105},[95,140,116],{"class":101},[95,142,119],{"class":105},[95,144,145],{"class":122},"vite",[95,147,126],{"class":105},[95,149,151],{"class":97,"line":150},3,[95,152,154],{"emptyLinePlaceholder":153},true,"\n",[95,156,158,161,164,167,170],{"class":97,"line":157},4,[95,159,160],{"class":101},"export",[95,162,163],{"class":101}," default",[95,165,136],{"class":166},"s2Zo4",[95,168,169],{"class":109},"(",[95,171,172],{"class":105},"{\n",[95,174,176,180,183,186,189,191,194],{"class":97,"line":175},5,[95,177,179],{"class":178},"swJcz","  plugins",[95,181,182],{"class":105},":",[95,184,185],{"class":109}," [nosticsStrip",[95,187,188],{"class":105},".",[95,190,145],{"class":166},[95,192,193],{"class":109},"()]",[95,195,196],{"class":105},",\n",[95,198,200,203],{"class":97,"line":199},6,[95,201,202],{"class":105},"}",[95,204,205],{"class":109},")\n",[66,207,208,209,182],{},"Rolldown through ",[72,210,211],{},"tsdown",[85,213,216],{"className":87,"code":214,"filename":215,"language":90,"meta":91,"style":91},"import { nosticsStrip } from 'nostics\u002Funplugin\u002Fstrip-transform'\nimport { defineConfig } from 'tsdown'\n\nexport default defineConfig({\n  entry: ['src\u002Findex.ts'],\n  plugins: [nosticsStrip.rolldown()],\n})\n","tsdown.config.ts",[72,217,218,236,254,258,270,293,310],{"__ignoreMap":91},[95,219,220,222,224,226,228,230,232,234],{"class":97,"line":98},[95,221,102],{"class":101},[95,223,106],{"class":105},[95,225,110],{"class":109},[95,227,113],{"class":105},[95,229,116],{"class":101},[95,231,119],{"class":105},[95,233,123],{"class":122},[95,235,126],{"class":105},[95,237,238,240,242,244,246,248,250,252],{"class":97,"line":129},[95,239,102],{"class":101},[95,241,106],{"class":105},[95,243,136],{"class":109},[95,245,113],{"class":105},[95,247,116],{"class":101},[95,249,119],{"class":105},[95,251,211],{"class":122},[95,253,126],{"class":105},[95,255,256],{"class":97,"line":150},[95,257,154],{"emptyLinePlaceholder":153},[95,259,260,262,264,266,268],{"class":97,"line":157},[95,261,160],{"class":101},[95,263,163],{"class":101},[95,265,136],{"class":166},[95,267,169],{"class":109},[95,269,172],{"class":105},[95,271,272,275,277,280,283,286,288,291],{"class":97,"line":175},[95,273,274],{"class":178},"  entry",[95,276,182],{"class":105},[95,278,279],{"class":109}," [",[95,281,282],{"class":105},"'",[95,284,285],{"class":122},"src\u002Findex.ts",[95,287,282],{"class":105},[95,289,290],{"class":109},"]",[95,292,196],{"class":105},[95,294,295,297,299,301,303,306,308],{"class":97,"line":199},[95,296,179],{"class":178},[95,298,182],{"class":105},[95,300,185],{"class":109},[95,302,188],{"class":105},[95,304,305],{"class":166},"rolldown",[95,307,193],{"class":109},[95,309,196],{"class":105},[95,311,313,315],{"class":97,"line":312},7,[95,314,202],{"class":105},[95,316,205],{"class":109},[66,318,319,320,323,324,323,327,323,330,333,334,188],{},"The plugin is built with unplugin, so it also exposes ",[72,321,322],{},".rollup()",", ",[72,325,326],{},".webpack()",[72,328,329],{},".rspack()",[72,331,332],{},".esbuild()",", and ",[72,335,336],{},".farm()",[77,338,340],{"id":339},"what-it-changes","What it changes",[66,342,343,344,347],{},"First, it marks ",[72,345,346],{},"defineDiagnostics()"," calls as pure.",[85,349,351],{"className":87,"code":350,"language":90,"meta":91,"style":91},"const diagnostics = \u002F*#__PURE__*\u002F defineDiagnostics({\n  codes: {\n    NUXT_B2011: { why: 'Plugin mode conflicts with file suffix.' },\n  },\n})\n",[72,352,353,376,386,410,415],{"__ignoreMap":91},[95,354,355,359,362,365,369,372,374],{"class":97,"line":98},[95,356,358],{"class":357},"spNyl","const",[95,360,361],{"class":109}," diagnostics ",[95,363,364],{"class":105},"=",[95,366,368],{"class":367},"sHwdD"," \u002F*#__PURE__*\u002F",[95,370,371],{"class":166}," defineDiagnostics",[95,373,169],{"class":109},[95,375,172],{"class":105},[95,377,378,381,383],{"class":97,"line":129},[95,379,380],{"class":178},"  codes",[95,382,182],{"class":105},[95,384,385],{"class":105}," {\n",[95,387,388,391,393,395,398,400,402,405,407],{"class":97,"line":150},[95,389,390],{"class":178},"    NUXT_B2011",[95,392,182],{"class":105},[95,394,106],{"class":105},[95,396,397],{"class":178}," why",[95,399,182],{"class":105},[95,401,119],{"class":105},[95,403,404],{"class":122},"Plugin mode conflicts with file suffix.",[95,406,282],{"class":105},[95,408,409],{"class":105}," },\n",[95,411,412],{"class":97,"line":157},[95,413,414],{"class":105},"  },\n",[95,416,417,419],{"class":97,"line":175},[95,418,202],{"class":105},[95,420,205],{"class":109},[66,422,423],{},"Second, it wraps bare diagnostic expression statements with a production guard.",[85,425,427],{"className":87,"code":426,"language":90,"meta":91,"style":91},"diagnostics.NUXT_B2011()\n",[72,428,429],{"__ignoreMap":91},[95,430,431,434,436,439],{"class":97,"line":98},[95,432,433],{"class":109},"diagnostics",[95,435,188],{"class":105},[95,437,438],{"class":166},"NUXT_B2011",[95,440,441],{"class":109},"()\n",[66,443,444],{},"becomes:",[85,446,448],{"className":87,"code":447,"language":90,"meta":91,"style":91},"process.env.NODE_ENV !== \"production\" && diagnostics.NUXT_B2011()\n",[72,449,450],{"__ignoreMap":91},[95,451,452,455,457,460,462,465,468,471,474,477,480,483,485,487],{"class":97,"line":98},[95,453,454],{"class":109},"process",[95,456,188],{"class":105},[95,458,459],{"class":109},"env",[95,461,188],{"class":105},[95,463,464],{"class":109},"NODE_ENV ",[95,466,467],{"class":105},"!==",[95,469,470],{"class":105}," \"",[95,472,473],{"class":122},"production",[95,475,476],{"class":105},"\"",[95,478,479],{"class":105}," &&",[95,481,482],{"class":109}," diagnostics",[95,484,188],{"class":105},[95,486,438],{"class":166},[95,488,441],{"class":109},[66,490,491],{},"In a production build, bundlers can remove the call. Once the calls are gone, the diagnostic catalog usually becomes unused too.",[77,493,495],{"id":494},"what-stays","What stays",[66,497,498],{},"The plugin only strips report-only expression statements.",[66,500,501],{},"These can be stripped:",[85,503,505],{"className":87,"code":504,"language":90,"meta":91,"style":91},"diagnostics.NUXT_B2011()\ncondition && diagnostics.NUXT_B5001()\n",[72,506,507,517],{"__ignoreMap":91},[95,508,509,511,513,515],{"class":97,"line":98},[95,510,433],{"class":109},[95,512,188],{"class":105},[95,514,438],{"class":166},[95,516,441],{"class":109},[95,518,519,522,525,527,529,532],{"class":97,"line":129},[95,520,521],{"class":109},"condition ",[95,523,524],{"class":105},"&&",[95,526,482],{"class":109},[95,528,188],{"class":105},[95,530,531],{"class":166},"NUXT_B5001",[95,533,441],{"class":109},[66,535,536],{},"These stay:",[85,538,540],{"className":87,"code":539,"language":90,"meta":91,"style":91},"throw diagnostics.NUXT_B2011()\nreturn diagnostics.NUXT_B2011()\nconst diagnostic = diagnostics.NUXT_B2011()\nfn(diagnostics.NUXT_B2011())\n",[72,541,542,555,568,585],{"__ignoreMap":91},[95,543,544,547,549,551,553],{"class":97,"line":98},[95,545,546],{"class":101},"throw",[95,548,482],{"class":109},[95,550,188],{"class":105},[95,552,438],{"class":166},[95,554,441],{"class":109},[95,556,557,560,562,564,566],{"class":97,"line":129},[95,558,559],{"class":101},"return",[95,561,482],{"class":109},[95,563,188],{"class":105},[95,565,438],{"class":166},[95,567,441],{"class":109},[95,569,570,572,575,577,579,581,583],{"class":97,"line":150},[95,571,358],{"class":357},[95,573,574],{"class":109}," diagnostic ",[95,576,364],{"class":105},[95,578,482],{"class":109},[95,580,188],{"class":105},[95,582,438],{"class":166},[95,584,441],{"class":109},[95,586,587,590,593,595,597],{"class":97,"line":157},[95,588,589],{"class":166},"fn",[95,591,592],{"class":109},"(diagnostics",[95,594,188],{"class":105},[95,596,438],{"class":166},[95,598,599],{"class":109},"())\n",[66,601,602],{},"This matters. Throwing a diagnostic is part of your runtime behavior, so the plugin leaves it alone.",[77,604,606],{"id":605},"cross-file-tracking","Cross-file tracking",[66,608,609],{},"The plugin can track a directly exported diagnostics object across one relative import.",[85,611,614],{"className":87,"code":612,"filename":613,"language":90,"meta":91,"style":91},"export const diagnostics = defineDiagnostics({\n  codes: {\n    NUXT_B2011: { why: 'Plugin mode conflicts with file suffix.' },\n  },\n})\n","src\u002Fdiagnostics.ts",[72,615,616,633,641,661,665],{"__ignoreMap":91},[95,617,618,620,623,625,627,629,631],{"class":97,"line":98},[95,619,160],{"class":101},[95,621,622],{"class":357}," const",[95,624,361],{"class":109},[95,626,364],{"class":105},[95,628,371],{"class":166},[95,630,169],{"class":109},[95,632,172],{"class":105},[95,634,635,637,639],{"class":97,"line":129},[95,636,380],{"class":178},[95,638,182],{"class":105},[95,640,385],{"class":105},[95,642,643,645,647,649,651,653,655,657,659],{"class":97,"line":150},[95,644,390],{"class":178},[95,646,182],{"class":105},[95,648,106],{"class":105},[95,650,397],{"class":178},[95,652,182],{"class":105},[95,654,119],{"class":105},[95,656,404],{"class":122},[95,658,282],{"class":105},[95,660,409],{"class":105},[95,662,663],{"class":97,"line":157},[95,664,414],{"class":105},[95,666,667,669],{"class":97,"line":175},[95,668,202],{"class":105},[95,670,205],{"class":109},[85,672,674],{"className":87,"code":673,"filename":285,"language":90,"meta":91,"style":91},"import { diagnostics } from '.\u002Fdiagnostics'\n\ndiagnostics.NUXT_B2011()\n",[72,675,676,695,699],{"__ignoreMap":91},[95,677,678,680,682,684,686,688,690,693],{"class":97,"line":98},[95,679,102],{"class":101},[95,681,106],{"class":105},[95,683,482],{"class":109},[95,685,113],{"class":105},[95,687,116],{"class":101},[95,689,119],{"class":105},[95,691,692],{"class":122},".\u002Fdiagnostics",[95,694,126],{"class":105},[95,696,697],{"class":97,"line":129},[95,698,154],{"emptyLinePlaceholder":153},[95,700,701,703,705,707],{"class":97,"line":150},[95,702,433],{"class":109},[95,704,188],{"class":105},[95,706,438],{"class":166},[95,708,441],{"class":109},[66,710,711],{},"Keep this simple for best results:",[713,714,715,719,725,728],"ul",{},[716,717,718],"li",{},"Use relative imports.",[716,720,721,722,724],{},"Export the result of ",[72,723,346],{}," directly.",[716,726,727],{},"Avoid factory wrappers for exported diagnostics objects.",[716,729,730],{},"Avoid relying on deep barrel re-exports for stripping.",[77,732,734],{"id":733},"options","Options",[85,736,738],{"className":87,"code":737,"language":90,"meta":91,"style":91},"nosticsStrip.vite({\n  packageName: 'my-diagnostics-wrapper',\n})\n",[72,739,740,752,768],{"__ignoreMap":91},[95,741,742,744,746,748,750],{"class":97,"line":98},[95,743,74],{"class":109},[95,745,188],{"class":105},[95,747,145],{"class":166},[95,749,169],{"class":109},[95,751,172],{"class":105},[95,753,754,757,759,761,764,766],{"class":97,"line":129},[95,755,756],{"class":178},"  packageName",[95,758,182],{"class":105},[95,760,119],{"class":105},[95,762,763],{"class":122},"my-diagnostics-wrapper",[95,765,282],{"class":105},[95,767,196],{"class":105},[95,769,770,772],{"class":97,"line":150},[95,771,202],{"class":105},[95,773,205],{"class":109},[775,776,777,793],"table",{},[778,779,780],"thead",{},[781,782,783,787,790],"tr",{},[784,785,786],"th",{},"Option",[784,788,789],{},"Default",[784,791,792],{},"Use",[794,795,796],"tbody",{},[781,797,798,804,809],{},[799,800,801],"td",{},[72,802,803],{},"packageName",[799,805,806],{},[72,807,808],{},"'nostics'",[799,810,811],{},"Detect imports from another package name",[77,813,815],{"id":814},"check-the-output","Check the output",[66,817,818],{},"After a production build, search the bundle:",[85,820,824],{"className":821,"code":822,"language":823,"meta":91,"style":91},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","rg 'NUXT_B2011|Plugin mode conflicts' dist\u002F\n","bash",[72,825,826],{"__ignoreMap":91},[95,827,828,832,834,837,839],{"class":97,"line":98},[95,829,831],{"class":830},"sBMFI","rg",[95,833,119],{"class":105},[95,835,836],{"class":122},"NUXT_B2011|Plugin mode conflicts",[95,838,282],{"class":105},[95,840,841],{"class":122}," dist\u002F\n",[66,843,844,845,323,847,849],{},"Report-only diagnostics should be gone. Diagnostics used in ",[72,846,546],{},[72,848,559],{},", assignments, or function arguments can remain.",[851,852,853],"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 .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 .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":91,"searchDepth":129,"depth":129,"links":855},[856,857,858,859,860,861],{"id":79,"depth":129,"text":80},{"id":339,"depth":129,"text":340},{"id":494,"depth":129,"text":495},{"id":605,"depth":129,"text":606},{"id":733,"depth":129,"text":734},{"id":814,"depth":129,"text":815},"Strip report-only diagnostics from production bundles.","md",null,{},{"icon":34},{"title":31,"description":862},"xx6avPNAul51RhrQUjifC2iAk4tO65K73QKF5G98i5I",[870,872],{"title":26,"path":27,"stem":28,"description":871,"icon":29,"children":-1},"Send diagnostics to the console, files, HTTP, or your own reporter.",{"title":36,"path":37,"stem":38,"description":873,"icon":39,"children":-1},"Forward browser diagnostics from Vite dev to a local log file.",1781110594583]