[{"data":1,"prerenderedAt":5157},["ShallowReactive",2],{"plugins":3,"$fHjgHa7JiU-d4Y7-UUOZrPzQNVV1ZtTpFamuCTA6rKQ0":1968,"-docs-build-advanced-usage-deploy":2608,"-docs-build-advanced-usage-deploy-surround":5152},[4,214,363,504,627,764,902,1041,1145,1284,1422,1564,1700,1835],{"id":5,"title":6,"_id":7,"_partial":8,"_path":7,"body":9,"categories":7,"category":150,"contributors":151,"description":19,"extension":188,"github":131,"icon":189,"learn_more":7,"maintainers":190,"meta":199,"name":200,"navigation":201,"npm":6,"path":202,"repo":203,"seo":204,"sponsor":8,"stats":205,"stem":211,"type":212,"website":131,"__hash__":213},"plugins\u002Fplugins\u002Fa11y.md","@nuxt\u002Fa11y",null,false,{"type":10,"value":11,"toc":145},"minimark",[12,16,20,24,50,53,60,119,122,141],[13,14,6],"h1",{"id":15},"nuxta11y",[17,18,19],"p",{},"在开发期间在浏览器中提供实时可访问性反馈和自动测试。",[21,22,23],"h2",{"id":23},"安装",[25,26,31],"pre",{"className":27,"code":28,"language":29,"meta":30,"style":30},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","npm install @nuxt\u002Fa11y\n","bash","",[32,33,34],"code",{"__ignoreMap":30},[35,36,39,43,47],"span",{"class":37,"line":38},"line",1,[35,40,42],{"class":41},"s52Pk","npm",[35,44,46],{"class":45},"sGFVr"," install",[35,48,49],{"class":45}," @nuxt\u002Fa11y\n",[21,51,52],{"id":52},"使用",[17,54,55,56,59],{},"将插件添加到您的 ",[32,57,58],{},"nuxt.config.ts",":",[25,61,65],{"className":62,"code":63,"language":64,"meta":30,"style":30},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fa11y']\n})\n","ts",[32,66,67,88,110],{"__ignoreMap":30},[35,68,69,73,76,80,84],{"class":37,"line":38},[35,70,72],{"class":71},"s8R28","export",[35,74,75],{"class":71}," default",[35,77,79],{"class":78},"s3cPz"," defineNuxtConfig",[35,81,83],{"class":82},"sZSNi","(",[35,85,87],{"class":86},"sDfIl","{\n",[35,89,91,95,97,100,103,105,107],{"class":37,"line":90},2,[35,92,94],{"class":93},"sRlkE","  modules",[35,96,59],{"class":86},[35,98,99],{"class":82}," [",[35,101,102],{"class":86},"'",[35,104,6],{"class":45},[35,106,102],{"class":86},[35,108,109],{"class":82},"]\n",[35,111,113,116],{"class":37,"line":112},3,[35,114,115],{"class":86},"}",[35,117,118],{"class":82},")\n",[21,120,121],{"id":121},"链接",[123,124,125,135],"ul",{},[126,127,128],"li",{},[129,130,134],"a",{"href":131,"rel":132},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fa11y",[133],"nofollow","文档",[126,136,137],{},[129,138,140],{"href":131,"rel":139},[133],"GitHub",[142,143,144],"style",{},"html pre.shiki code .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--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 .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}",{"title":30,"searchDepth":90,"depth":90,"links":146},[147,148,149],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Devtools",[152,155,158,161,165,169,173,177,180,184],{"id":38,"username":153,"contributions":154},"user99376",43,{"id":90,"username":156,"contributions":157},"user86649",16,{"id":112,"username":159,"contributions":160},"user49829",57,{"id":162,"username":163,"contributions":164},4,"user72634",14,{"id":166,"username":167,"contributions":168},5,"user28650",92,{"id":170,"username":171,"contributions":172},6,"user8758",55,{"id":174,"username":175,"contributions":176},7,"user74896",89,{"id":178,"username":179,"contributions":160},8,"user51798",{"id":181,"username":182,"contributions":183},9,"user67000",32,{"id":185,"username":186,"contributions":187},10,"user11627",36,"md","nuxt.svg",[191,195],{"name":192,"github":193,"bluesky":194},"Tim Damen","timdamen","timdamen.io",{"name":196,"github":197,"bluesky":198},"Daniel Roe","danielroe","danielroe.dev",{},"a11y",true,"\u002Fplugins\u002Fa11y","nuxt\u002Fa11y",{"title":6,"description":19},{"downloads":206,"stars":207,"watchers":208,"forks":209,"defaultBranch":210},2272902,36407,4858,1470,"main","plugins\u002Fa11y","official","YLxALoH_wZAsqCG6CMMXV7CM10sA6Y-aWquupJl5GMM",{"id":215,"title":216,"_id":7,"_partial":8,"_path":7,"body":217,"categories":7,"category":309,"contributors":310,"description":224,"extension":188,"github":300,"icon":189,"learn_more":7,"maintainers":338,"meta":351,"name":352,"navigation":201,"npm":216,"path":353,"repo":354,"seo":355,"sponsor":8,"stats":356,"stem":361,"type":212,"website":294,"__hash__":362},"plugins\u002Fplugins\u002Fcontent.md","@nuxt\u002Fcontent",{"type":10,"value":218,"toc":304},[219,222,225,227,241,243,247,286,288,302],[13,220,216],{"id":221},"nuxtcontent",[17,223,224],{},"基于文件的 CMS，支持 Markdown、YAML、JSON。",[21,226,23],{"id":23},[25,228,230],{"className":27,"code":229,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fcontent\n",[32,231,232],{"__ignoreMap":30},[35,233,234,236,238],{"class":37,"line":38},[35,235,42],{"class":41},[35,237,46],{"class":45},[35,239,240],{"class":45}," @nuxt\u002Fcontent\n",[21,242,52],{"id":52},[17,244,55,245,59],{},[32,246,58],{},[25,248,250],{"className":62,"code":249,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fcontent']\n})\n",[32,251,252,264,280],{"__ignoreMap":30},[35,253,254,256,258,260,262],{"class":37,"line":38},[35,255,72],{"class":71},[35,257,75],{"class":71},[35,259,79],{"class":78},[35,261,83],{"class":82},[35,263,87],{"class":86},[35,265,266,268,270,272,274,276,278],{"class":37,"line":90},[35,267,94],{"class":93},[35,269,59],{"class":86},[35,271,99],{"class":82},[35,273,102],{"class":86},[35,275,216],{"class":45},[35,277,102],{"class":86},[35,279,109],{"class":82},[35,281,282,284],{"class":37,"line":112},[35,283,115],{"class":86},[35,285,118],{"class":82},[21,287,121],{"id":121},[123,289,290,296],{},[126,291,292],{},[129,293,134],{"href":294,"rel":295},"https:\u002F\u002Fcontent.nuxt.com",[133],[126,297,298],{},[129,299,140],{"href":300,"rel":301},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fcontent",[133],[142,303,144],{},{"title":30,"searchDepth":90,"depth":90,"links":305},[306,307,308],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"CMS",[311,314,317,319,322,324,327,330,333,335],{"id":38,"username":312,"contributions":313},"user13979",60,{"id":90,"username":315,"contributions":316},"user10947",52,{"id":112,"username":318,"contributions":187},"user11345",{"id":162,"username":320,"contributions":321},"user77708",64,{"id":166,"username":323,"contributions":183},"user96159",{"id":170,"username":325,"contributions":326},"user10252",65,{"id":174,"username":328,"contributions":329},"user88319",37,{"id":178,"username":331,"contributions":332},"user83651",74,{"id":181,"username":334,"contributions":183},"user76515",{"id":185,"username":336,"contributions":337},"user63596",73,[339,343,347],{"name":340,"github":341,"bluesky":342},"Farnabaz","farnabaz","farnabaz.dev",{"name":344,"github":345,"bluesky":346},"Baptiste Leproux","larbish","larbish.bsky.social",{"name":348,"github":349,"bluesky":350},"Sébastien Chopin","Atinux","atinux.com",{},"content","\u002Fplugins\u002Fcontent","nuxt\u002Fcontent#main",{"title":216,"description":224},{"downloads":357,"stars":358,"watchers":359,"forks":360,"defaultBranch":210},201400,37560,3723,499,"plugins\u002Fcontent","MPWexsb65o956t8kAcciteLzN5MYNwClRrI_CaJBSKg",{"id":364,"title":365,"_id":7,"_partial":8,"_path":7,"body":366,"categories":7,"category":150,"contributors":458,"description":373,"extension":188,"github":449,"icon":189,"learn_more":7,"maintainers":487,"meta":492,"name":493,"navigation":201,"npm":365,"path":494,"repo":495,"seo":496,"sponsor":8,"stats":497,"stem":502,"type":212,"website":443,"__hash__":503},"plugins\u002Fplugins\u002Fdevtools.md","@nuxt\u002Fdevtools",{"type":10,"value":367,"toc":453},[368,371,374,376,390,392,396,435,437,451],[13,369,365],{"id":370},"nuxtdevtools",[17,372,373],{},"帮助您更好地了解 Nuxt 应用程序的可视化工具。",[21,375,23],{"id":23},[25,377,379],{"className":27,"code":378,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fdevtools\n",[32,380,381],{"__ignoreMap":30},[35,382,383,385,387],{"class":37,"line":38},[35,384,42],{"class":41},[35,386,46],{"class":45},[35,388,389],{"class":45}," @nuxt\u002Fdevtools\n",[21,391,52],{"id":52},[17,393,55,394,59],{},[32,395,58],{},[25,397,399],{"className":62,"code":398,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fdevtools']\n})\n",[32,400,401,413,429],{"__ignoreMap":30},[35,402,403,405,407,409,411],{"class":37,"line":38},[35,404,72],{"class":71},[35,406,75],{"class":71},[35,408,79],{"class":78},[35,410,83],{"class":82},[35,412,87],{"class":86},[35,414,415,417,419,421,423,425,427],{"class":37,"line":90},[35,416,94],{"class":93},[35,418,59],{"class":86},[35,420,99],{"class":82},[35,422,102],{"class":86},[35,424,365],{"class":45},[35,426,102],{"class":86},[35,428,109],{"class":82},[35,430,431,433],{"class":37,"line":112},[35,432,115],{"class":86},[35,434,118],{"class":82},[21,436,121],{"id":121},[123,438,439,445],{},[126,440,441],{},[129,442,134],{"href":443,"rel":444},"https:\u002F\u002Fdevtools.nuxt.com",[133],[126,446,447],{},[129,448,140],{"href":449,"rel":450},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fdevtools",[133],[142,452,144],{},{"title":30,"searchDepth":90,"depth":90,"links":454},[455,456,457],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[459,462,464,467,470,473,476,479,482,485],{"id":38,"username":460,"contributions":461},"user84341",23,{"id":90,"username":463,"contributions":174},"user10137",{"id":112,"username":465,"contributions":466},"user19110",67,{"id":162,"username":468,"contributions":469},"user69842",54,{"id":166,"username":471,"contributions":472},"user65163",29,{"id":170,"username":474,"contributions":475},"user87690",77,{"id":174,"username":477,"contributions":478},"user48871",99,{"id":178,"username":480,"contributions":481},"user11541",97,{"id":181,"username":483,"contributions":484},"user31909",90,{"id":185,"username":486,"contributions":332},"user72693",[488],{"name":489,"github":490,"bluesky":491},"Anthony Fu","antfu","antfu.me",{},"devtools","\u002Fplugins\u002Fdevtools","nuxt\u002Fdevtools#main\u002Fpackages\u002Fdevtools",{"title":365,"description":373},{"downloads":498,"stars":499,"watchers":500,"forks":501,"defaultBranch":210},338641,49933,433,225,"plugins\u002Fdevtools","TT6qV1tkhfILzk2j1f23tBPQu61DhF4FgXZ3Ap8Ntt0",{"id":505,"title":506,"_id":7,"_partial":8,"_path":7,"body":507,"categories":7,"category":150,"contributors":606,"description":514,"extension":188,"github":590,"icon":189,"learn_more":596,"maintainers":613,"meta":615,"name":616,"navigation":201,"npm":506,"path":617,"repo":618,"seo":619,"sponsor":8,"stats":620,"stem":625,"type":212,"website":584,"__hash__":626},"plugins\u002Fplugins\u002Feslint.md","@nuxt\u002Feslint",{"type":10,"value":508,"toc":601},[509,512,515,517,531,533,537,576,578,599],[13,510,506],{"id":511},"nuxteslint",[17,513,514],{},"项目感知、易于使用、可扩展且面向未来的 ESLint 集成。",[21,516,23],{"id":23},[25,518,520],{"className":27,"code":519,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Feslint\n",[32,521,522],{"__ignoreMap":30},[35,523,524,526,528],{"class":37,"line":38},[35,525,42],{"class":41},[35,527,46],{"class":45},[35,529,530],{"class":45}," @nuxt\u002Feslint\n",[21,532,52],{"id":52},[17,534,55,535,59],{},[32,536,58],{},[25,538,540],{"className":62,"code":539,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Feslint']\n})\n",[32,541,542,554,570],{"__ignoreMap":30},[35,543,544,546,548,550,552],{"class":37,"line":38},[35,545,72],{"class":71},[35,547,75],{"class":71},[35,549,79],{"class":78},[35,551,83],{"class":82},[35,553,87],{"class":86},[35,555,556,558,560,562,564,566,568],{"class":37,"line":90},[35,557,94],{"class":93},[35,559,59],{"class":86},[35,561,99],{"class":82},[35,563,102],{"class":86},[35,565,506],{"class":45},[35,567,102],{"class":86},[35,569,109],{"class":82},[35,571,572,574],{"class":37,"line":112},[35,573,115],{"class":86},[35,575,118],{"class":82},[21,577,121],{"id":121},[123,579,580,586,592],{},[126,581,582],{},[129,583,134],{"href":584,"rel":585},"https:\u002F\u002Feslint.nuxt.com",[133],[126,587,588],{},[129,589,140],{"href":590,"rel":591},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Feslint",[133],[126,593,594],{},[129,595,598],{"href":596,"rel":597},"https:\u002F\u002Feslint.nuxt.com\u002Fpackages\u002Fmodule",[133],"了解更多",[142,600,144],{},{"title":30,"searchDepth":90,"depth":90,"links":602},[603,604,605],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[607,610],{"id":38,"username":608,"contributions":609},"user30113",84,{"id":90,"username":611,"contributions":612},"user63757",82,[614],{"name":489,"github":490,"bluesky":491},{},"eslint","\u002Fplugins\u002Feslint","nuxt\u002Feslint",{"title":506,"description":514},{"downloads":621,"stars":622,"watchers":623,"forks":624,"defaultBranch":210},4219129,40472,1319,493,"plugins\u002Feslint","y2i5lamEk99gHsmaCVBOf7SwD-h3Q5biJ5CqBsfaDlQ",{"id":628,"title":629,"_id":7,"_partial":8,"_path":7,"body":630,"categories":7,"category":722,"contributors":723,"description":637,"extension":188,"github":713,"icon":189,"learn_more":7,"maintainers":750,"meta":752,"name":753,"navigation":201,"npm":629,"path":754,"repo":755,"seo":756,"sponsor":8,"stats":757,"stem":762,"type":212,"website":707,"__hash__":763},"plugins\u002Fplugins\u002Ffonts.md","@nuxt\u002Ffonts",{"type":10,"value":631,"toc":717},[632,635,638,640,654,656,660,699,701,715],[13,633,629],{"id":634},"nuxtfonts",[17,636,637],{},"添加自定义 Web 字体，注重性能。",[21,639,23],{"id":23},[25,641,643],{"className":27,"code":642,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Ffonts\n",[32,644,645],{"__ignoreMap":30},[35,646,647,649,651],{"class":37,"line":38},[35,648,42],{"class":41},[35,650,46],{"class":45},[35,652,653],{"class":45}," @nuxt\u002Ffonts\n",[21,655,52],{"id":52},[17,657,55,658,59],{},[32,659,58],{},[25,661,663],{"className":62,"code":662,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Ffonts']\n})\n",[32,664,665,677,693],{"__ignoreMap":30},[35,666,667,669,671,673,675],{"class":37,"line":38},[35,668,72],{"class":71},[35,670,75],{"class":71},[35,672,79],{"class":78},[35,674,83],{"class":82},[35,676,87],{"class":86},[35,678,679,681,683,685,687,689,691],{"class":37,"line":90},[35,680,94],{"class":93},[35,682,59],{"class":86},[35,684,99],{"class":82},[35,686,102],{"class":86},[35,688,629],{"class":45},[35,690,102],{"class":86},[35,692,109],{"class":82},[35,694,695,697],{"class":37,"line":112},[35,696,115],{"class":86},[35,698,118],{"class":82},[21,700,121],{"id":121},[123,702,703,709],{},[126,704,705],{},[129,706,134],{"href":707,"rel":708},"https:\u002F\u002Ffonts.nuxt.com",[133],[126,710,711],{},[129,712,140],{"href":713,"rel":714},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ffonts",[133],[142,716,144],{},{"title":30,"searchDepth":90,"depth":90,"links":718},[719,720,721],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Fonts",[724,727,730,733,735,738,741,744,746,748],{"id":38,"username":725,"contributions":726},"user42306",56,{"id":90,"username":728,"contributions":729},"user71199",33,{"id":112,"username":731,"contributions":732},"user16707",22,{"id":162,"username":734,"contributions":176},"user13463",{"id":166,"username":736,"contributions":737},"user63863",80,{"id":170,"username":739,"contributions":740},"user72286",35,{"id":174,"username":742,"contributions":743},"user84726",48,{"id":178,"username":745,"contributions":187},"user22103",{"id":181,"username":747,"contributions":164},"user45708",{"id":185,"username":749,"contributions":475},"user14848",[751],{"name":196,"github":197,"bluesky":198},{},"fonts","\u002Fplugins\u002Ffonts","nuxt\u002Ffonts",{"title":629,"description":637},{"downloads":758,"stars":759,"watchers":760,"forks":761,"defaultBranch":210},701472,23636,1481,2636,"plugins\u002Ffonts","T0fSWfcZn4S2Byr1npK0ulV8J1a2e4adeTZfj-sX5fc",{"id":765,"title":766,"_id":7,"_partial":8,"_path":7,"body":767,"categories":7,"category":150,"contributors":858,"description":774,"extension":188,"github":844,"icon":189,"learn_more":7,"maintainers":885,"meta":890,"name":891,"navigation":201,"npm":766,"path":892,"repo":893,"seo":894,"sponsor":8,"stats":895,"stem":900,"type":212,"website":844,"__hash__":901},"plugins\u002Fplugins\u002Fhints.md","@nuxt\u002Fhints",{"type":10,"value":768,"toc":853},[769,772,775,777,791,793,797,836,838,851],[13,770,766],{"id":771},"nuxthints",[17,773,774],{},"Nuxt 插件，显示应用程序各方面的提示，如性能、安全等！",[21,776,23],{"id":23},[25,778,780],{"className":27,"code":779,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fhints\n",[32,781,782],{"__ignoreMap":30},[35,783,784,786,788],{"class":37,"line":38},[35,785,42],{"class":41},[35,787,46],{"class":45},[35,789,790],{"class":45}," @nuxt\u002Fhints\n",[21,792,52],{"id":52},[17,794,55,795,59],{},[32,796,58],{},[25,798,800],{"className":62,"code":799,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fhints']\n})\n",[32,801,802,814,830],{"__ignoreMap":30},[35,803,804,806,808,810,812],{"class":37,"line":38},[35,805,72],{"class":71},[35,807,75],{"class":71},[35,809,79],{"class":78},[35,811,83],{"class":82},[35,813,87],{"class":86},[35,815,816,818,820,822,824,826,828],{"class":37,"line":90},[35,817,94],{"class":93},[35,819,59],{"class":86},[35,821,99],{"class":82},[35,823,102],{"class":86},[35,825,766],{"class":45},[35,827,102],{"class":86},[35,829,109],{"class":82},[35,831,832,834],{"class":37,"line":112},[35,833,115],{"class":86},[35,835,118],{"class":82},[21,837,121],{"id":121},[123,839,840,846],{},[126,841,842],{},[129,843,134],{"href":844,"rel":845},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fhints",[133],[126,847,848],{},[129,849,140],{"href":844,"rel":850},[133],[142,852,144],{},{"title":30,"searchDepth":90,"depth":90,"links":854},[855,856,857],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[859,862,865,867,869,871,874,877,879,882],{"id":38,"username":860,"contributions":861},"user6533",91,{"id":90,"username":863,"contributions":864},"user71544",18,{"id":112,"username":866,"contributions":337},"user91675",{"id":162,"username":868,"contributions":166},"user25368",{"id":166,"username":870,"contributions":187},"user16215",{"id":170,"username":872,"contributions":873},"user81050",38,{"id":174,"username":875,"contributions":876},"user19700",44,{"id":178,"username":878,"contributions":321},"user41134",{"id":181,"username":880,"contributions":881},"user20762",19,{"id":185,"username":883,"contributions":884},"user339",42,[886],{"name":887,"github":888,"bluesky":889},"Julien Huang","huang-julien","julienhuang-dev.bsky.social",{},"hints","\u002Fplugins\u002Fhints","nuxt\u002Fhints",{"title":766,"description":774},{"downloads":896,"stars":897,"watchers":898,"forks":899,"defaultBranch":210},2213397,14758,1404,545,"plugins\u002Fhints","M4nkyrPTPXtaPD1YbnzIHqsvw9KU-5hHKG6Hp--8MMc",{"id":903,"title":904,"_id":7,"_partial":8,"_path":7,"body":905,"categories":7,"category":996,"contributors":997,"description":912,"extension":188,"github":982,"icon":189,"learn_more":7,"maintainers":1026,"meta":1029,"name":1030,"navigation":201,"npm":904,"path":1031,"repo":1032,"seo":1033,"sponsor":8,"stats":1034,"stem":1039,"type":212,"website":982,"__hash__":1040},"plugins\u002Fplugins\u002Ficon.md","@nuxt\u002Ficon",{"type":10,"value":906,"toc":991},[907,910,913,915,929,931,935,974,976,989],[13,908,904],{"id":909},"nuxticon",[17,911,912],{},"Nuxt 的图标插件，包含来自 Iconify 的 200,000+ 个即用图标。",[21,914,23],{"id":23},[25,916,918],{"className":27,"code":917,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Ficon\n",[32,919,920],{"__ignoreMap":30},[35,921,922,924,926],{"class":37,"line":38},[35,923,42],{"class":41},[35,925,46],{"class":45},[35,927,928],{"class":45}," @nuxt\u002Ficon\n",[21,930,52],{"id":52},[17,932,55,933,59],{},[32,934,58],{},[25,936,938],{"className":62,"code":937,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Ficon']\n})\n",[32,939,940,952,968],{"__ignoreMap":30},[35,941,942,944,946,948,950],{"class":37,"line":38},[35,943,72],{"class":71},[35,945,75],{"class":71},[35,947,79],{"class":78},[35,949,83],{"class":82},[35,951,87],{"class":86},[35,953,954,956,958,960,962,964,966],{"class":37,"line":90},[35,955,94],{"class":93},[35,957,59],{"class":86},[35,959,99],{"class":82},[35,961,102],{"class":86},[35,963,904],{"class":45},[35,965,102],{"class":86},[35,967,109],{"class":82},[35,969,970,972],{"class":37,"line":112},[35,971,115],{"class":86},[35,973,118],{"class":82},[21,975,121],{"id":121},[123,977,978,984],{},[126,979,980],{},[129,981,134],{"href":982,"rel":983},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ficon",[133],[126,985,986],{},[129,987,140],{"href":982,"rel":988},[133],[142,990,144],{},{"title":30,"searchDepth":90,"depth":90,"links":992},[993,994,995],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"UI",[998,1001,1004,1007,1010,1012,1015,1018,1020,1023],{"id":38,"username":999,"contributions":1000},"user37024",11,{"id":90,"username":1002,"contributions":1003},"user87306",70,{"id":112,"username":1005,"contributions":1006},"user73353",45,{"id":162,"username":1008,"contributions":1009},"user58644",20,{"id":166,"username":1011,"contributions":38},"user69260",{"id":170,"username":1013,"contributions":1014},"user30247",30,{"id":174,"username":1016,"contributions":1017},"user18477",41,{"id":178,"username":1019,"contributions":160},"user52769",{"id":181,"username":1021,"contributions":1022},"user43970",75,{"id":185,"username":1024,"contributions":1025},"user98140",12,[1027,1028],{"name":348,"github":349,"bluesky":350},{"name":489,"github":490,"bluesky":491},{},"icon","\u002Fplugins\u002Ficon","nuxt\u002Ficon",{"title":904,"description":912},{"downloads":1035,"stars":1036,"watchers":1037,"forks":1038,"defaultBranch":210},3202080,45665,4249,188,"plugins\u002Ficon","qOiuB-isRs131Q2t8HEr0bLG3_Lq-TrBdqcsYYbaouc",{"id":1042,"title":1043,"_id":7,"_partial":8,"_path":7,"body":1044,"categories":7,"category":1136,"contributors":7,"description":1051,"extension":188,"github":1127,"icon":189,"learn_more":7,"maintainers":7,"meta":1137,"name":1138,"navigation":201,"npm":1043,"path":1139,"repo":1140,"seo":1141,"sponsor":8,"stats":7,"stem":1142,"type":1143,"website":1121,"__hash__":1144},"plugins\u002Fplugins\u002Fimage.md","@nuxt\u002Fimage",{"type":10,"value":1045,"toc":1131},[1046,1049,1052,1054,1068,1070,1074,1113,1115,1129],[13,1047,1043],{"id":1048},"nuxtimage",[17,1050,1051],{},"添加图片，支持渐进式处理、懒加载、调整大小和提供商支持。",[21,1053,23],{"id":23},[25,1055,1057],{"className":27,"code":1056,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fimage\n",[32,1058,1059],{"__ignoreMap":30},[35,1060,1061,1063,1065],{"class":37,"line":38},[35,1062,42],{"class":41},[35,1064,46],{"class":45},[35,1066,1067],{"class":45}," @nuxt\u002Fimage\n",[21,1069,52],{"id":52},[17,1071,55,1072,59],{},[32,1073,58],{},[25,1075,1077],{"className":62,"code":1076,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fimage']\n})\n",[32,1078,1079,1091,1107],{"__ignoreMap":30},[35,1080,1081,1083,1085,1087,1089],{"class":37,"line":38},[35,1082,72],{"class":71},[35,1084,75],{"class":71},[35,1086,79],{"class":78},[35,1088,83],{"class":82},[35,1090,87],{"class":86},[35,1092,1093,1095,1097,1099,1101,1103,1105],{"class":37,"line":90},[35,1094,94],{"class":93},[35,1096,59],{"class":86},[35,1098,99],{"class":82},[35,1100,102],{"class":86},[35,1102,1043],{"class":45},[35,1104,102],{"class":86},[35,1106,109],{"class":82},[35,1108,1109,1111],{"class":37,"line":112},[35,1110,115],{"class":86},[35,1112,118],{"class":82},[21,1114,121],{"id":121},[123,1116,1117,1123],{},[126,1118,1119],{},[129,1120,134],{"href":1121,"rel":1122},"https:\u002F\u002Fimage.nuxt.com",[133],[126,1124,1125],{},[129,1126,140],{"href":1127,"rel":1128},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fimage",[133],[142,1130,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1132},[1133,1134,1135],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Images",{},"image","\u002Fplugins\u002Fimage","nuxt\u002Fimage",{"title":1043,"description":1051},"plugins\u002Fimage","[object Object]","CXK46BX2BS38OrXRmxzhBG5zRJ5aqUOc_MQQMO_IddQ",{"id":1146,"title":1147,"_id":7,"_partial":8,"_path":7,"body":1148,"categories":7,"category":1245,"contributors":1246,"description":1154,"extension":188,"github":1230,"icon":1267,"learn_more":1236,"maintainers":1268,"meta":1272,"name":1147,"navigation":201,"npm":1147,"path":1273,"repo":1274,"seo":1275,"sponsor":8,"stats":1276,"stem":1281,"type":1282,"website":1224,"__hash__":1283},"plugins\u002Fplugins\u002Fnuxt-auth-sanctum.md","nuxt-auth-sanctum",{"type":10,"value":1149,"toc":1240},[1150,1152,1155,1157,1171,1173,1177,1216,1218,1238],[13,1151,1147],{"id":1147},[17,1153,1154],{},"Laravel Sanctum 身份验证的 Nuxt 插件",[21,1156,23],{"id":23},[25,1158,1160],{"className":27,"code":1159,"language":29,"meta":30,"style":30},"npm install nuxt-auth-sanctum\n",[32,1161,1162],{"__ignoreMap":30},[35,1163,1164,1166,1168],{"class":37,"line":38},[35,1165,42],{"class":41},[35,1167,46],{"class":45},[35,1169,1170],{"class":45}," nuxt-auth-sanctum\n",[21,1172,52],{"id":52},[17,1174,55,1175,59],{},[32,1176,58],{},[25,1178,1180],{"className":62,"code":1179,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['nuxt-auth-sanctum']\n})\n",[32,1181,1182,1194,1210],{"__ignoreMap":30},[35,1183,1184,1186,1188,1190,1192],{"class":37,"line":38},[35,1185,72],{"class":71},[35,1187,75],{"class":71},[35,1189,79],{"class":78},[35,1191,83],{"class":82},[35,1193,87],{"class":86},[35,1195,1196,1198,1200,1202,1204,1206,1208],{"class":37,"line":90},[35,1197,94],{"class":93},[35,1199,59],{"class":86},[35,1201,99],{"class":82},[35,1203,102],{"class":86},[35,1205,1147],{"class":45},[35,1207,102],{"class":86},[35,1209,109],{"class":82},[35,1211,1212,1214],{"class":37,"line":112},[35,1213,115],{"class":86},[35,1215,118],{"class":82},[21,1217,121],{"id":121},[123,1219,1220,1226,1232],{},[126,1221,1222],{},[129,1223,134],{"href":1224,"rel":1225},"https:\u002F\u002Fsanctum.manchenkoff.me",[133],[126,1227,1228],{},[129,1229,140],{"href":1230,"rel":1231},"https:\u002F\u002Fgithub.com\u002Fmanchenkoff\u002Fnuxt-auth-sanctum",[133],[126,1233,1234],{},[129,1235,598],{"href":1236,"rel":1237},"https:\u002F\u002Flaravel.com\u002Fdocs\u002F12.x\u002Fsanctum",[133],[142,1239,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1241},[1242,1243,1244],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Security",[1247,1249,1251,1254,1257,1259,1262,1264],{"id":38,"username":1248,"contributions":337},"user3491",{"id":90,"username":1250,"contributions":478},"user52329",{"id":112,"username":1252,"contributions":1253},"user34359",81,{"id":162,"username":1255,"contributions":1256},"user86267",13,{"id":166,"username":1258,"contributions":166},"user71011",{"id":170,"username":1260,"contributions":1261},"user87107",86,{"id":174,"username":1263,"contributions":475},"user69652",{"id":178,"username":1265,"contributions":1266},"user80629",72,"laravel.svg",[1269],{"name":1270,"github":1271},"Artem Manchenkov","manchenkoff",{},"\u002Fplugins\u002Fnuxt-auth-sanctum","manchenkoff\u002Fnuxt-auth-sanctum",{"title":1147,"description":1154},{"downloads":1277,"stars":1278,"watchers":1279,"forks":1280,"defaultBranch":210},170439,571,491,288,"plugins\u002Fnuxt-auth-sanctum","3rd-party","a8McvtgCknAVn7piEt5AFjXKvoeG52aRnk-CAc_OdQo",{"id":1285,"title":1286,"_id":7,"_partial":8,"_path":7,"body":1287,"categories":7,"category":1378,"contributors":1379,"description":1404,"extension":188,"github":1369,"icon":1405,"learn_more":7,"maintainers":1406,"meta":1411,"name":1286,"navigation":201,"npm":1286,"path":1412,"repo":1413,"seo":1414,"sponsor":8,"stats":1415,"stem":1420,"type":1282,"website":1363,"__hash__":1421},"plugins\u002Fplugins\u002Fnuxt-mongoose.md","nuxt-mongoose",{"type":10,"value":1288,"toc":1373},[1289,1291,1294,1296,1310,1312,1316,1355,1357,1371],[13,1290,1286],{"id":1286},[17,1292,1293],{},"简化在项目中使用 Mongoose 的 Nuxt 插件。",[21,1295,23],{"id":23},[25,1297,1299],{"className":27,"code":1298,"language":29,"meta":30,"style":30},"npm install nuxt-mongoose\n",[32,1300,1301],{"__ignoreMap":30},[35,1302,1303,1305,1307],{"class":37,"line":38},[35,1304,42],{"class":41},[35,1306,46],{"class":45},[35,1308,1309],{"class":45}," nuxt-mongoose\n",[21,1311,52],{"id":52},[17,1313,55,1314,59],{},[32,1315,58],{},[25,1317,1319],{"className":62,"code":1318,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['nuxt-mongoose']\n})\n",[32,1320,1321,1333,1349],{"__ignoreMap":30},[35,1322,1323,1325,1327,1329,1331],{"class":37,"line":38},[35,1324,72],{"class":71},[35,1326,75],{"class":71},[35,1328,79],{"class":78},[35,1330,83],{"class":82},[35,1332,87],{"class":86},[35,1334,1335,1337,1339,1341,1343,1345,1347],{"class":37,"line":90},[35,1336,94],{"class":93},[35,1338,59],{"class":86},[35,1340,99],{"class":82},[35,1342,102],{"class":86},[35,1344,1286],{"class":45},[35,1346,102],{"class":86},[35,1348,109],{"class":82},[35,1350,1351,1353],{"class":37,"line":112},[35,1352,115],{"class":86},[35,1354,118],{"class":82},[21,1356,121],{"id":121},[123,1358,1359,1365],{},[126,1360,1361],{},[129,1362,134],{"href":1363,"rel":1364},"https:\u002F\u002Fnuxt-mongoose.nuxt.space",[133],[126,1366,1367],{},[129,1368,140],{"href":1369,"rel":1370},"https:\u002F\u002Fgithub.com\u002Farashsheyda\u002Fnuxt-mongoose",[133],[142,1372,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1374},[1375,1376,1377],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Database",[1380,1383,1385,1387,1389,1392,1394,1397,1400,1402],{"id":38,"username":1381,"contributions":1382},"user44120",87,{"id":90,"username":1384,"contributions":881},"user69808",{"id":112,"username":1386,"contributions":160},"user43499",{"id":162,"username":1388,"contributions":1009},"user57745",{"id":166,"username":1390,"contributions":1391},"user19045",71,{"id":170,"username":1393,"contributions":1261},"user92868",{"id":174,"username":1395,"contributions":1396},"user76193",26,{"id":178,"username":1398,"contributions":1399},"user83794",94,{"id":181,"username":1401,"contributions":1399},"user91572",{"id":185,"username":1403,"contributions":1261},"user66728","简化在项目中使用 Mongoose 的 Nuxt 插件","nuxt-mongoose.svg",[1407],{"name":1408,"github":1409,"bluesky":1410},"Arash Ari Sheyda","arashsheyda","arashsheyda.me",{},"\u002Fplugins\u002Fnuxt-mongoose","arashsheyda\u002Fnuxt-mongoose",{"title":1286,"description":1404},{"downloads":1416,"stars":1417,"watchers":1418,"forks":1419,"defaultBranch":210},313268,1561,463,234,"plugins\u002Fnuxt-mongoose","rVDGisvuxFx5xMNmMn_AP8A-8i-bNJ-G_buXYZVbU5U",{"id":1423,"title":1424,"_id":7,"_partial":8,"_path":7,"body":1425,"categories":7,"category":1522,"contributors":1523,"description":1547,"extension":188,"github":1507,"icon":1548,"learn_more":1513,"maintainers":1549,"meta":1553,"name":1424,"navigation":201,"npm":1424,"path":1554,"repo":1555,"seo":1556,"sponsor":8,"stats":1557,"stem":1562,"type":1282,"website":1501,"__hash__":1563},"plugins\u002Fplugins\u002Fnuxt-posthog.md","nuxt-posthog",{"type":10,"value":1426,"toc":1517},[1427,1429,1432,1434,1448,1450,1454,1493,1495,1515],[13,1428,1424],{"id":1424},[17,1430,1431],{},"以最少的配置将 PostHog 集成到您的应用程序中。",[21,1433,23],{"id":23},[25,1435,1437],{"className":27,"code":1436,"language":29,"meta":30,"style":30},"npm install nuxt-posthog\n",[32,1438,1439],{"__ignoreMap":30},[35,1440,1441,1443,1445],{"class":37,"line":38},[35,1442,42],{"class":41},[35,1444,46],{"class":45},[35,1446,1447],{"class":45}," nuxt-posthog\n",[21,1449,52],{"id":52},[17,1451,55,1452,59],{},[32,1453,58],{},[25,1455,1457],{"className":62,"code":1456,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['nuxt-posthog']\n})\n",[32,1458,1459,1471,1487],{"__ignoreMap":30},[35,1460,1461,1463,1465,1467,1469],{"class":37,"line":38},[35,1462,72],{"class":71},[35,1464,75],{"class":71},[35,1466,79],{"class":78},[35,1468,83],{"class":82},[35,1470,87],{"class":86},[35,1472,1473,1475,1477,1479,1481,1483,1485],{"class":37,"line":90},[35,1474,94],{"class":93},[35,1476,59],{"class":86},[35,1478,99],{"class":82},[35,1480,102],{"class":86},[35,1482,1424],{"class":45},[35,1484,102],{"class":86},[35,1486,109],{"class":82},[35,1488,1489,1491],{"class":37,"line":112},[35,1490,115],{"class":86},[35,1492,118],{"class":82},[21,1494,121],{"id":121},[123,1496,1497,1503,1509],{},[126,1498,1499],{},[129,1500,134],{"href":1501,"rel":1502},"https:\u002F\u002Fnuxt-posthog.cmitjans.dev",[133],[126,1504,1505],{},[129,1506,140],{"href":1507,"rel":1508},"https:\u002F\u002Fgithub.com\u002Fmitjans\u002Fnuxt-posthog",[133],[126,1510,1511],{},[129,1512,598],{"href":1513,"rel":1514},"https:\u002F\u002Fposthog.com",[133],[142,1516,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1518},[1519,1520,1521],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Analytics",[1524,1526,1529,1531,1534,1536,1538,1541,1543,1545],{"id":38,"username":1525,"contributions":1261},"user99328",{"id":90,"username":1527,"contributions":1528},"user36640",27,{"id":112,"username":1530,"contributions":743},"user8127",{"id":162,"username":1532,"contributions":1533},"user15154",63,{"id":166,"username":1535,"contributions":166},"user34098",{"id":170,"username":1537,"contributions":160},"user56129",{"id":174,"username":1539,"contributions":1540},"user16681",69,{"id":178,"username":1542,"contributions":183},"user23250",{"id":181,"username":1544,"contributions":469},"user69685",{"id":185,"username":1546,"contributions":164},"user26894","以最少的配置将 PostHog 集成到您的应用程序中","posthog.svg",[1550],{"name":1551,"github":1552},"Carles Mitjans","mitjans",{},"\u002Fplugins\u002Fnuxt-posthog","mitjans\u002Fnuxt-posthog",{"title":1424,"description":1547},{"downloads":1558,"stars":1559,"watchers":1560,"forks":1561,"defaultBranch":210},372773,749,249,248,"plugins\u002Fnuxt-posthog","2n73yQ9EGdeStmU9-KnMhhd-BroMNfiF29MCtTXzhg4",{"id":1565,"title":1566,"_id":7,"_partial":8,"_path":7,"body":1567,"categories":7,"category":1659,"contributors":1660,"description":1574,"extension":188,"github":1650,"icon":189,"learn_more":7,"maintainers":1684,"meta":1688,"name":1689,"navigation":201,"npm":1566,"path":1690,"repo":1691,"seo":1692,"sponsor":8,"stats":1693,"stem":1698,"type":212,"website":1644,"__hash__":1699},"plugins\u002Fplugins\u002Fscripts.md","@nuxt\u002Fscripts",{"type":10,"value":1568,"toc":1654},[1569,1572,1575,1577,1591,1593,1597,1636,1638,1652],[13,1570,1566],{"id":1571},"nuxtscripts",[17,1573,1574],{},"在不牺牲性能的情况下添加第三方脚本",[21,1576,23],{"id":23},[25,1578,1580],{"className":27,"code":1579,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fscripts\n",[32,1581,1582],{"__ignoreMap":30},[35,1583,1584,1586,1588],{"class":37,"line":38},[35,1585,42],{"class":41},[35,1587,46],{"class":45},[35,1589,1590],{"class":45}," @nuxt\u002Fscripts\n",[21,1592,52],{"id":52},[17,1594,55,1595,59],{},[32,1596,58],{},[25,1598,1600],{"className":62,"code":1599,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fscripts']\n})\n",[32,1601,1602,1614,1630],{"__ignoreMap":30},[35,1603,1604,1606,1608,1610,1612],{"class":37,"line":38},[35,1605,72],{"class":71},[35,1607,75],{"class":71},[35,1609,79],{"class":78},[35,1611,83],{"class":82},[35,1613,87],{"class":86},[35,1615,1616,1618,1620,1622,1624,1626,1628],{"class":37,"line":90},[35,1617,94],{"class":93},[35,1619,59],{"class":86},[35,1621,99],{"class":82},[35,1623,102],{"class":86},[35,1625,1566],{"class":45},[35,1627,102],{"class":86},[35,1629,109],{"class":82},[35,1631,1632,1634],{"class":37,"line":112},[35,1633,115],{"class":86},[35,1635,118],{"class":82},[21,1637,121],{"id":121},[123,1639,1640,1646],{},[126,1641,1642],{},[129,1643,134],{"href":1644,"rel":1645},"https:\u002F\u002Fscripts.nuxt.com",[133],[126,1647,1648],{},[129,1649,140],{"href":1650,"rel":1651},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fscripts",[133],[142,1653,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1655},[1656,1657,1658],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},"Performance",[1661,1663,1665,1668,1670,1672,1675,1677,1680,1682],{"id":38,"username":1662,"contributions":185},"user50497",{"id":90,"username":1664,"contributions":170},"user7468",{"id":112,"username":1666,"contributions":1667},"user4831",85,{"id":162,"username":1669,"contributions":861},"user75013",{"id":166,"username":1671,"contributions":743},"user98072",{"id":170,"username":1673,"contributions":1674},"user11559",28,{"id":174,"username":1676,"contributions":1006},"user13714",{"id":178,"username":1678,"contributions":1679},"user94609",51,{"id":181,"username":1681,"contributions":154},"user41644",{"id":185,"username":1683,"contributions":732},"user76238",[1685],{"name":1686,"github":1687},"Harlan Wilton","harlan-zw",{},"scripts","\u002Fplugins\u002Fscripts","nuxt\u002Fscripts",{"title":1566,"description":1574},{"downloads":1694,"stars":1695,"watchers":1696,"forks":1697,"defaultBranch":210},654472,110,4891,718,"plugins\u002Fscripts","snquBudp2I-f1Ubv48w-17ZeDz9inLAAt_tSOMR4LCo",{"id":1701,"title":1702,"_id":7,"_partial":8,"_path":7,"body":1703,"categories":7,"category":150,"contributors":1795,"description":1710,"extension":188,"github":1786,"icon":189,"learn_more":7,"maintainers":1820,"meta":1823,"name":1824,"navigation":201,"npm":1702,"path":1825,"repo":1826,"seo":1827,"sponsor":8,"stats":1828,"stem":1833,"type":212,"website":1780,"__hash__":1834},"plugins\u002Fplugins\u002Ftest-utils.md","@nuxt\u002Ftest-utils",{"type":10,"value":1704,"toc":1790},[1705,1708,1711,1713,1727,1729,1733,1772,1774,1788],[13,1706,1702],{"id":1707},"nuxttest-utils",[17,1709,1710],{},"Nuxt 的测试工具",[21,1712,23],{"id":23},[25,1714,1716],{"className":27,"code":1715,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Ftest-utils\n",[32,1717,1718],{"__ignoreMap":30},[35,1719,1720,1722,1724],{"class":37,"line":38},[35,1721,42],{"class":41},[35,1723,46],{"class":45},[35,1725,1726],{"class":45}," @nuxt\u002Ftest-utils\n",[21,1728,52],{"id":52},[17,1730,55,1731,59],{},[32,1732,58],{},[25,1734,1736],{"className":62,"code":1735,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Ftest-utils']\n})\n",[32,1737,1738,1750,1766],{"__ignoreMap":30},[35,1739,1740,1742,1744,1746,1748],{"class":37,"line":38},[35,1741,72],{"class":71},[35,1743,75],{"class":71},[35,1745,79],{"class":78},[35,1747,83],{"class":82},[35,1749,87],{"class":86},[35,1751,1752,1754,1756,1758,1760,1762,1764],{"class":37,"line":90},[35,1753,94],{"class":93},[35,1755,59],{"class":86},[35,1757,99],{"class":82},[35,1759,102],{"class":86},[35,1761,1702],{"class":45},[35,1763,102],{"class":86},[35,1765,109],{"class":82},[35,1767,1768,1770],{"class":37,"line":112},[35,1769,115],{"class":86},[35,1771,118],{"class":82},[21,1773,121],{"id":121},[123,1775,1776,1782],{},[126,1777,1778],{},[129,1779,134],{"href":1780,"rel":1781},"https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fgetting-started\u002Ftesting",[133],[126,1783,1784],{},[129,1785,140],{"href":1786,"rel":1787},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Ftest-utils",[133],[142,1789,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1791},[1792,1793,1794],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[1796,1799,1801,1804,1806,1808,1810,1812,1815,1818],{"id":38,"username":1797,"contributions":1798},"user42799",61,{"id":90,"username":1800,"contributions":1006},"user77607",{"id":112,"username":1802,"contributions":1803},"user70090",47,{"id":162,"username":1805,"contributions":181},"user95279",{"id":166,"username":1807,"contributions":1256},"user89952",{"id":170,"username":1809,"contributions":172},"user41689",{"id":174,"username":1811,"contributions":316},"user2190",{"id":178,"username":1813,"contributions":1814},"user4111",39,{"id":181,"username":1816,"contributions":1817},"user93327",46,{"id":185,"username":1819,"contributions":181},"user52428",[1821,1822],{"name":196,"github":197,"bluesky":198},{"name":489,"github":490,"bluesky":491},{},"test-utils","\u002Fplugins\u002Ftest-utils","nuxt\u002Ftest-utils#main",{"title":1702,"description":1710},{"downloads":1829,"stars":1830,"watchers":1831,"forks":1832,"defaultBranch":210},509128,9236,3824,2540,"plugins\u002Ftest-utils","uXkQHRcL1KX0bO4rKHC8DNyQVRtjTqdsoU3mNZK2YD4",{"id":1836,"title":1837,"_id":7,"_partial":8,"_path":7,"body":1838,"categories":7,"category":996,"contributors":1930,"description":1845,"extension":188,"github":1921,"icon":189,"learn_more":7,"maintainers":1950,"meta":1956,"name":1957,"navigation":201,"npm":1837,"path":1958,"repo":1959,"seo":1960,"sponsor":8,"stats":1961,"stem":1966,"type":212,"website":1915,"__hash__":1967},"plugins\u002Fplugins\u002Fui.md","@nuxt\u002Fui",{"type":10,"value":1839,"toc":1925},[1840,1843,1846,1848,1862,1864,1868,1907,1909,1923],[13,1841,1837],{"id":1842},"nuxtui",[17,1844,1845],{},"基于 Reka UI 和 Tailwind CSS 的直观 UI 库",[21,1847,23],{"id":23},[25,1849,1851],{"className":27,"code":1850,"language":29,"meta":30,"style":30},"npm install @nuxt\u002Fui\n",[32,1852,1853],{"__ignoreMap":30},[35,1854,1855,1857,1859],{"class":37,"line":38},[35,1856,42],{"class":41},[35,1858,46],{"class":45},[35,1860,1861],{"class":45}," @nuxt\u002Fui\n",[21,1863,52],{"id":52},[17,1865,55,1866,59],{},[32,1867,58],{},[25,1869,1871],{"className":62,"code":1870,"language":64,"meta":30,"style":30},"export default defineNuxtConfig({\n  modules: ['@nuxt\u002Fui']\n})\n",[32,1872,1873,1885,1901],{"__ignoreMap":30},[35,1874,1875,1877,1879,1881,1883],{"class":37,"line":38},[35,1876,72],{"class":71},[35,1878,75],{"class":71},[35,1880,79],{"class":78},[35,1882,83],{"class":82},[35,1884,87],{"class":86},[35,1886,1887,1889,1891,1893,1895,1897,1899],{"class":37,"line":90},[35,1888,94],{"class":93},[35,1890,59],{"class":86},[35,1892,99],{"class":82},[35,1894,102],{"class":86},[35,1896,1837],{"class":45},[35,1898,102],{"class":86},[35,1900,109],{"class":82},[35,1902,1903,1905],{"class":37,"line":112},[35,1904,115],{"class":86},[35,1906,118],{"class":82},[21,1908,121],{"id":121},[123,1910,1911,1917],{},[126,1912,1913],{},[129,1914,134],{"href":1915,"rel":1916},"https:\u002F\u002Fui.nuxt.com\u002Fdocs\u002Fgetting-started\u002Finstallation\u002Fnuxt",[133],[126,1918,1919],{},[129,1920,140],{"href":1921,"rel":1922},"https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui",[133],[142,1924,144],{},{"title":30,"searchDepth":90,"depth":90,"links":1926},[1927,1928,1929],{"id":23,"depth":90,"text":23},{"id":52,"depth":90,"text":52},{"id":121,"depth":90,"text":121},[1931,1933,1935,1938,1941,1943,1945,1948],{"id":38,"username":1932,"contributions":1017},"user99346",{"id":90,"username":1934,"contributions":316},"user54967",{"id":112,"username":1936,"contributions":1937},"user11433",31,{"id":162,"username":1939,"contributions":1940},"user9986",100,{"id":166,"username":1942,"contributions":1937},"user89841",{"id":170,"username":1944,"contributions":1022},"user3725",{"id":174,"username":1946,"contributions":1947},"user89501",68,{"id":178,"username":1949,"contributions":609},"user88437",[1951,1955],{"name":1952,"github":1953,"bluesky":1954},"Benjamin Canac","benjamincanac","benjamincanac.dev",{"name":348,"github":349,"bluesky":350},{},"ui","\u002Fplugins\u002Fui","nuxt\u002Fui#dev",{"title":1837,"description":1845},{"downloads":1962,"stars":1963,"watchers":1964,"forks":1965,"defaultBranch":210},4898787,4588,1125,2648,"plugins\u002Fui","-l-I_UU8K6HTEy7-xTpyP_Mc1SGIH0ELsk7kc8GHh28",[1969,2025,2159,2233,2273,2287,2325,2422,2542,2556,2583],{"title":1970,"path":1971,"stem":1972,"children":1973,"titleTemplate":7,"icon":2024},"入门指南","\u002Fdocs\u002Fguide","docs\u002F01.guide\u002F01.index",[1974,1976,1980,2008,2012,2016],{"title":1975,"path":1971,"stem":1972,"titleTemplate":7},"创建你的第一个仓库",{"title":1977,"path":1978,"stem":1979,"titleTemplate":7},"迁移工具","\u002Fdocs\u002Fguide\u002Fmigration-tools","docs\u002F01.guide\u002F02.migration-tools",{"title":1981,"path":1982,"stem":1983,"children":1984,"titleTemplate":7,"icon":2007},"仓库","\u002Fdocs\u002Fguide\u002Frepo","docs\u002F01.guide\u002F02.repo\u002F01.index",[1985,1987,1991,1995,1999,2003],{"title":1986,"path":1982,"stem":1983,"titleTemplate":7},"产品介绍",{"title":1988,"path":1989,"stem":1990,"titleTemplate":7},"密钥仓库","\u002Fdocs\u002Fguide\u002Frepo\u002Fsecret","docs\u002F01.guide\u002F02.repo\u002F02.secret",{"title":1992,"path":1993,"stem":1994,"titleTemplate":7},"元数据","\u002Fdocs\u002Fguide\u002Frepo\u002Fannotations","docs\u002F01.guide\u002F02.repo\u002F03.annotations",{"title":1996,"path":1997,"stem":1998,"titleTemplate":7},"ISSUE 模板","\u002Fdocs\u002Fguide\u002Frepo\u002Fissue-template","docs\u002F01.guide\u002F02.repo\u002F04.issue-template",{"title":2000,"path":2001,"stem":2002,"titleTemplate":7},"分类标签","\u002Fdocs\u002Fguide\u002Frepo\u002Flabel","docs\u002F01.guide\u002F02.repo\u002F05.label",{"title":2004,"path":2005,"stem":2006,"titleTemplate":7},"UI 定制","\u002Fdocs\u002Fguide\u002Frepo\u002Fsettings","docs\u002F01.guide\u002F02.repo\u002F06.settings","lucide:folder",{"title":2009,"path":2010,"stem":2011,"titleTemplate":7},"角色权限","\u002Fdocs\u002Fguide\u002Frole-permissions","docs\u002F01.guide\u002F03.role-permissions",{"title":2013,"path":2014,"stem":2015,"titleTemplate":7},"访问令牌","\u002Fdocs\u002Fguide\u002Faccess-token","docs\u002F01.guide\u002F04.access-token",{"title":2017,"path":2018,"stem":2019,"children":2020,"titleTemplate":7,"icon":2023},"任务集","\u002Fdocs\u002Fguide\u002Fmissions","docs\u002F01.guide\u002F07.missions\u002F01.index",[2021],{"title":2022,"path":2018,"stem":2019,"titleTemplate":7},"任务集介绍","lucide:target","lucide:book-open",{"title":2026,"titleTemplate":7,"icon":2027,"path":2028,"stem":2029,"children":2030,"page":8},"云原生构建","lucide:rocket","\u002Fdocs\u002Fbuild","docs\u002F03.build",[2031,2079,2099,2139],{"title":2032,"path":2033,"stem":2034,"children":2035,"titleTemplate":7,"icon":2078},"基础使用","\u002Fdocs\u002Fbuild\u002Fbasic-usage","docs\u002F03.build\u002F01.basic-usage\u002F01.index",[2036,2038,2042,2046,2050,2054,2058,2062,2066,2070,2074],{"title":2037,"path":2033,"stem":2034,"titleTemplate":7},"云原生构建介绍",{"title":2039,"path":2040,"stem":2041,"titleTemplate":7},"快速开始","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fquick-start","docs\u002F03.build\u002F01.basic-usage\u002F02.quick-start",{"title":2043,"path":2044,"stem":2045,"titleTemplate":7},"构建触发规则","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Ftrigger-rule","docs\u002F03.build\u002F01.basic-usage\u002F03.trigger-rule",{"title":2047,"path":2048,"stem":2049,"titleTemplate":7},"配置文件","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fconfiguration","docs\u002F03.build\u002F01.basic-usage\u002F04.configuration",{"title":2051,"path":2052,"stem":2053,"titleTemplate":7},"流水线语法","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fgrammar","docs\u002F03.build\u002F01.basic-usage\u002F05.grammar",{"title":2055,"path":2056,"stem":2057,"titleTemplate":7},"构建环境","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fbuild-env","docs\u002F03.build\u002F01.basic-usage\u002F06.build-env",{"title":2059,"path":2060,"stem":2061,"titleTemplate":7},"构建集群","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fbuild-node","docs\u002F03.build\u002F01.basic-usage\u002F07.build-node",{"title":2063,"path":2064,"stem":2065,"titleTemplate":7},"环境变量","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fenv","docs\u002F03.build\u002F01.basic-usage\u002F08.env",{"title":2067,"path":2068,"stem":2069,"titleTemplate":7},"默认环境变量","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fbuild-in-env","docs\u002F03.build\u002F01.basic-usage\u002F09.build-in-env",{"title":2071,"path":2072,"stem":2073,"titleTemplate":7},"超时策略","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Ftimeout","docs\u002F03.build\u002F01.basic-usage\u002F10.timeout",{"title":2075,"path":2076,"stem":2077,"titleTemplate":7},"权限说明","\u002Fdocs\u002Fbuild\u002Fbasic-usage\u002Fpermission","docs\u002F03.build\u002F01.basic-usage\u002F11.permission","lucide:book",{"title":2080,"path":2081,"stem":2082,"children":2083,"titleTemplate":7,"icon":2098},"插件","\u002Fdocs\u002Fbuild\u002Fplugins","docs\u002F03.build\u002F02.plugins\u002F01.index",[2084,2086,2090,2094],{"title":2085,"path":2081,"stem":2082,"titleTemplate":7},"内置任务",{"title":2087,"path":2088,"stem":2089,"titleTemplate":7},"插件市场","\u002Fdocs\u002Fbuild\u002Fplugins\u002Fplugins","docs\u002F03.build\u002F02.plugins\u002F02.plugins",{"title":2091,"path":2092,"stem":2093,"titleTemplate":7},"插件制作","\u002Fdocs\u002Fbuild\u002Fplugins\u002Fcreate-plugin","docs\u002F03.build\u002F02.plugins\u002F03.create-plugin",{"title":2095,"path":2096,"stem":2097,"titleTemplate":7},"贡献插件","\u002Fdocs\u002Fbuild\u002Fplugins\u002Fcontribute-plugin","docs\u002F03.build\u002F02.plugins\u002F04.contribute-plugin","lucide:puzzle",{"title":2100,"path":2101,"stem":2102,"children":2103,"titleTemplate":7,"icon":2138},"进阶使用","\u002Fdocs\u002Fbuild\u002Fadvanced-usage","docs\u002F03.build\u002F03.advanced-usage\u002F01.index",[2104,2106,2110,2114,2118,2122,2126,2130,2134],{"title":2105,"path":2101,"stem":2102,"titleTemplate":7},"简化配置文件",{"title":2107,"path":2108,"stem":2109,"titleTemplate":7},"文件引用","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Ffile-reference","docs\u002F03.build\u002F03.advanced-usage\u002F02.file-reference",{"title":2111,"path":2112,"stem":2113,"titleTemplate":7},"流水线缓存","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fpipeline-cache","docs\u002F03.build\u002F03.advanced-usage\u002F03.pipeline-cache",{"title":2115,"path":2116,"stem":2117,"titleTemplate":7},"定时任务","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fcrontab","docs\u002F03.build\u002F03.advanced-usage\u002F04.crontab",{"title":2119,"path":2120,"stem":2121,"titleTemplate":7},"跳过流水线","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fskip-pipeline","docs\u002F03.build\u002F03.advanced-usage\u002F05.skip-pipeline",{"title":2123,"path":2124,"stem":2125,"titleTemplate":7},"登录调试","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Flogin-debug","docs\u002F03.build\u002F03.advanced-usage\u002F06.login-debug",{"title":2127,"path":2128,"stem":2129,"titleTemplate":7},"手动触发流水线","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fweb-trigger","docs\u002F03.build\u002F03.advanced-usage\u002F07.web-trigger",{"title":2131,"path":2132,"stem":2133,"titleTemplate":7},"自定义部署流程","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Fdeploy","docs\u002F03.build\u002F03.advanced-usage\u002F08.deploy",{"title":2135,"path":2136,"stem":2137,"titleTemplate":7},"常见问题","\u002Fdocs\u002Fbuild\u002Fadvanced-usage\u002Ffaq","docs\u002F03.build\u002F03.advanced-usage\u002F09.faq","lucide:zap",{"title":2140,"path":2141,"stem":2142,"children":2143,"titleTemplate":7,"icon":2158},"示例","\u002Fdocs\u002Fbuild\u002Fshowcase","docs\u002F03.build\u002F04.showcase\u002Findex",[2144,2146,2150,2154],{"title":2145,"path":2141,"stem":2142,"titleTemplate":7},"构建Docker镜像并上传",{"title":2147,"path":2148,"stem":2149,"titleTemplate":7},"ISSUE通知到企业微信群","\u002Fdocs\u002Fbuild\u002Fshowcase\u002Fissue-notice-group","docs\u002F03.build\u002F04.showcase\u002Fissue-notice-group",{"title":2151,"path":2152,"stem":2153,"titleTemplate":7},"Monorepo按需构建","\u002Fdocs\u002Fbuild\u002Fshowcase\u002Fmonorepo","docs\u002F03.build\u002F04.showcase\u002Fmonorepo",{"title":2155,"path":2156,"stem":2157,"titleTemplate":7},"PR通知到企业微信群","\u002Fdocs\u002Fbuild\u002Fshowcase\u002Fpr-notice-group","docs\u002F03.build\u002F04.showcase\u002Fpr-notice-group","lucide:app-window-mac",{"title":2160,"titleTemplate":7,"icon":2161,"path":2162,"stem":2163,"children":2164,"page":8},"云原生开发","lucide:laptop","\u002Fdocs\u002Fworkspaces","docs\u002F04.workspaces",[2165,2199,2217],{"title":2032,"path":2166,"stem":2167,"children":2168,"titleTemplate":7,"icon":2078},"\u002Fdocs\u002Fworkspaces\u002Fbasic-usage","docs\u002F04.workspaces\u002F01.basic-usage\u002F01.index",[2169,2171,2175,2179,2183,2187,2191,2195],{"title":2170,"path":2166,"stem":2167,"titleTemplate":7},"云原生开发介绍",{"title":2172,"path":2173,"stem":2174,"titleTemplate":7},"默认开发环境","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fdefault-dev-env","docs\u002F04.workspaces\u002F01.basic-usage\u002F02.default-dev-env",{"title":2176,"path":2177,"stem":2178,"titleTemplate":7},"自定义开发环境","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fcustom-dev-env","docs\u002F04.workspaces\u002F01.basic-usage\u002F03.custom-dev-env",{"title":2180,"path":2181,"stem":2182,"titleTemplate":7},"业务端口预览","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fbusiness-preview","docs\u002F04.workspaces\u002F01.basic-usage\u002F04.business-preview",{"title":2184,"path":2185,"stem":2186,"titleTemplate":7},"远程开发工作区回收机制","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fworkspace-recycling","docs\u002F04.workspaces\u002F01.basic-usage\u002F05.workspace-recycling",{"title":2188,"path":2189,"stem":2190,"titleTemplate":7},"代码备份和文件漫游","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Ffile-keeper","docs\u002F04.workspaces\u002F01.basic-usage\u002F06.file-keeper",{"title":2192,"path":2193,"stem":2194,"titleTemplate":7},"云原生开发推荐用法","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Frecommended-practice","docs\u002F04.workspaces\u002F01.basic-usage\u002F07.recommended-practice",{"title":2196,"path":2197,"stem":2198,"titleTemplate":7},"常见问题解答","\u002Fdocs\u002Fworkspaces\u002Fbasic-usage\u002Fquestion","docs\u002F04.workspaces\u002F01.basic-usage\u002F08.question",{"title":2100,"path":2200,"stem":2201,"children":2202,"titleTemplate":7,"icon":2138},"\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage","docs\u002F04.workspaces\u002F02.advanced-usage\u002F01.index",[2203,2205,2209,2213],{"title":2204,"path":2200,"stem":2201,"titleTemplate":7},"自定义环境创建流程",{"title":2206,"path":2207,"stem":2208,"titleTemplate":7},"自定义云原生开发启动按钮","\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage\u002Fcustom-dev-button","docs\u002F04.workspaces\u002F02.advanced-usage\u002F02.custom-dev-button",{"title":2210,"path":2211,"stem":2212,"titleTemplate":7},"单\u002F双容器模式","\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage\u002Fdouble-container","docs\u002F04.workspaces\u002F02.advanced-usage\u002F03.double-container",{"title":2214,"path":2215,"stem":2216,"titleTemplate":7},"使用技巧","\u002Fdocs\u002Fworkspaces\u002Fadvanced-usage\u002Ftips","docs\u002F04.workspaces\u002F02.advanced-usage\u002F04.tips",{"title":2218,"path":2219,"stem":2220,"children":2221,"titleTemplate":7,"icon":2232},"本地IDE客户端","\u002Fdocs\u002Fworkspaces\u002Flocalide","docs\u002F04.workspaces\u002F03.localide\u002F01.index",[2222,2224,2228],{"title":2223,"path":2219,"stem":2220,"titleTemplate":7},"VSCode\u002FCursor 客户端",{"title":2225,"path":2226,"stem":2227,"titleTemplate":7},"Jetbrains 客户端","\u002Fdocs\u002Fworkspaces\u002Flocalide\u002Fjetbrains","docs\u002F04.workspaces\u002F03.localide\u002F02.jetbrains",{"title":2229,"path":2230,"stem":2231,"titleTemplate":7},"云原生开发 SSH 密钥指纹验证","\u002Fdocs\u002Fworkspaces\u002Flocalide\u002Ffingerprint","docs\u002F04.workspaces\u002F03.localide\u002F03.fingerprint","lucide:monitor",{"title":2234,"titleTemplate":7,"icon":2235,"path":2236,"stem":2237,"children":2238},"制品库","lucide:package","\u002Fdocs\u002Fartifact","docs\u002F05.artifact\u002Findex",[2239,2241,2245,2249,2253,2257,2261,2265,2269],{"title":2240,"path":2236,"stem":2237,"titleTemplate":7},"制品库介绍",{"title":2242,"path":2243,"stem":2244,"titleTemplate":7},"Composer 制品库","\u002Fdocs\u002Fartifact\u002Fcomposer","docs\u002F05.artifact\u002Fcomposer",{"title":2246,"path":2247,"stem":2248,"titleTemplate":7},"Docker 制品库","\u002Fdocs\u002Fartifact\u002Fdocker","docs\u002F05.artifact\u002Fdocker",{"title":2250,"path":2251,"stem":2252,"titleTemplate":7},"Helm 制品库","\u002Fdocs\u002Fartifact\u002Fhelm","docs\u002F05.artifact\u002Fhelm",{"title":2254,"path":2255,"stem":2256,"titleTemplate":7},"Maven 制品库","\u002Fdocs\u002Fartifact\u002Fmaven","docs\u002F05.artifact\u002Fmaven",{"title":2258,"path":2259,"stem":2260,"titleTemplate":7},"npm 制品库","\u002Fdocs\u002Fartifact\u002Fnpm","docs\u002F05.artifact\u002Fnpm",{"title":2262,"path":2263,"stem":2264,"titleTemplate":7},"Nuget 制品库","\u002Fdocs\u002Fartifact\u002Fnuget","docs\u002F05.artifact\u002Fnuget",{"title":2266,"path":2267,"stem":2268,"titleTemplate":7},"ohpm 制品库","\u002Fdocs\u002Fartifact\u002Fohpm","docs\u002F05.artifact\u002Fohpm",{"title":2270,"path":2271,"stem":2272,"titleTemplate":7},"PyPI 制品库","\u002Fdocs\u002Fartifact\u002Fpypi","docs\u002F05.artifact\u002Fpypi",{"title":2274,"path":2275,"stem":2276,"children":2277,"titleTemplate":7,"icon":2286},"AI助手","\u002Fdocs\u002Fai","docs\u002F06.ai\u002F01.index",[2278,2281],{"title":2279,"path":2275,"stem":2276,"titleTemplate":7,"icon":2280},"AI助手简介","lucide:bot",{"title":2282,"path":2283,"stem":2284,"titleTemplate":7,"icon":2285},"知识库","\u002Fdocs\u002Fai\u002Fknowledge-base","docs\u002F06.ai\u002F02.knowledge-base","lucide:knowledge","lucide:npc",{"title":2288,"titleTemplate":7,"icon":2289,"path":2290,"stem":2291,"children":2292,"page":8},"更多","lucide:menu","\u002Fdocs\u002Fmore","docs\u002F09.more",[2293,2297,2301,2305,2309,2313],{"title":2294,"path":2295,"stem":2296,"titleTemplate":7},"定价","\u002Fdocs\u002Fmore\u002Fpricing","docs\u002F09.more\u002F01.pricing",{"title":2298,"path":2299,"stem":2300,"titleTemplate":7},"平台赞赏","\u002Fdocs\u002Fmore\u002Fsponsor","docs\u002F09.more\u002F02.sponsor",{"title":2302,"path":2303,"stem":2304,"titleTemplate":7},"云原生构建-企业版","\u002Fdocs\u002Fmore\u002Fenterprise","docs\u002F09.more\u002F03.enterprise",{"title":2306,"path":2307,"stem":2308,"titleTemplate":7},"产品Logo","\u002Fdocs\u002Fmore\u002Flogo","docs\u002F09.more\u002F04.logo",{"title":2310,"path":2311,"stem":2312,"titleTemplate":7},"集成TAPD","\u002Fdocs\u002Fmore\u002Ftapd","docs\u002F09.more\u002F05.tapd",{"title":2314,"path":2315,"stem":2316,"children":2317,"titleTemplate":7,"icon":2324},"开发者","\u002Fdocs\u002Fmore\u002Fdevelops","docs\u002F09.more\u002F08.develops\u002F01.index",[2318,2320],{"title":2319,"path":2315,"stem":2316,"titleTemplate":7},"徽章",{"title":2321,"path":2322,"stem":2323,"titleTemplate":7},"Open API","\u002Fdocs\u002Fmore\u002Fdevelops\u002Fopenapi","docs\u002F09.more\u002F08.develops\u002F02.openapi","lucide:code",{"title":2326,"titleTemplate":7,"icon":2327,"path":2328,"stem":2329,"children":2330,"page":8},"目录结构","vscode-icons:default-folder","\u002Fdocs\u002Ftree","docs\u002F22.tree",[2331,2366,2376,2390,2395,2399,2403,2408,2413,2418],{"title":2332,"titleTemplate":7,"defaultOpen":201,"icon":2333,"path":2334,"stem":2335,"children":2336,"page":8},".cnb\u002F","vscode-icons:folder-type-app","\u002Fdocs\u002Ftree\u002F.cnb","docs\u002F22.tree\u002F0..cnb",[2337,2348,2353,2358,2362],{"title":2338,"titleTemplate":7,"defaultOpen":201,"icon":2339,"path":2340,"stem":2341,"children":2342,"page":8},"ISSUE_TEMPLATE\u002F","vscode-icons:folder-type-package","\u002Fdocs\u002Ftree\u002F.cnb\u002Fissue_template","docs\u002F22.tree\u002F0..cnb\u002F99.ISSUE_TEMPLATE",[2343],{"title":2344,"path":2345,"stem":2346,"titleTemplate":7,"icon":2347},"0-feedback","\u002Fdocs\u002Ftree\u002F.cnb\u002Fissue_template\u002F0-feedback","docs\u002F22.tree\u002F0..cnb\u002F99.ISSUE_TEMPLATE\u002F0-feedback","vscode-icons:folder-type-tools",{"title":2349,"path":2350,"stem":2351,"titleTemplate":7,"icon":2352},"logo.svg","\u002Fdocs\u002Ftree\u002F.cnb\u002Flogo_svg","docs\u002F22.tree\u002F0..cnb\u002Flogo_svg","vscode-icons:file-type-image",{"title":2354,"path":2355,"stem":2356,"titleTemplate":7,"icon":2357},"settings.yml","\u002Fdocs\u002Ftree\u002F.cnb\u002Fsettings_yml","docs\u002F22.tree\u002F0..cnb\u002Fsettings_yml","vscode-icons:file-type-light-config",{"title":2359,"path":2360,"stem":2361,"titleTemplate":7,"icon":2357},"tag_deploy.yml","\u002Fdocs\u002Ftree\u002F.cnb\u002Ftag_deploy_yml","docs\u002F22.tree\u002F0..cnb\u002Ftag_deploy_yml",{"title":2363,"path":2364,"stem":2365,"titleTemplate":7,"icon":2357},"web_trigger.yml","\u002Fdocs\u002Ftree\u002F.cnb\u002Fweb_trigger_yml","docs\u002F22.tree\u002F0..cnb\u002Fweb_trigger_yml",{"title":2367,"titleTemplate":7,"defaultOpen":201,"icon":2333,"path":2368,"stem":2369,"children":2370,"page":8},".ide\u002F","\u002Fdocs\u002Ftree\u002F.ide","docs\u002F22.tree\u002F0..ide",[2371],{"title":2372,"path":2373,"stem":2374,"titleTemplate":7,"icon":2375},"Dockerfile","\u002Fdocs\u002Ftree\u002F.ide\u002Fdockerfile","docs\u002F22.tree\u002F0..ide\u002FDockerfile","vscode-icons:default-file",{"title":2377,"titleTemplate":7,"defaultOpen":8,"icon":2378,"path":2379,"stem":2380,"children":2381,"page":8},"node_modules\u002F","vscode-icons:folder-type-node","\u002Fdocs\u002Ftree\u002Fnode-modules","docs\u002F22.tree\u002F0.node-modules",[2382,2386],{"title":2383,"path":2384,"stem":2385,"titleTemplate":7,"icon":2378},".bin\u002F","\u002Fdocs\u002Ftree\u002Fnode-modules\u002Fbin","docs\u002F22.tree\u002F0.node-modules\u002Fbin",{"title":2387,"path":2388,"stem":2389,"titleTemplate":7,"icon":2378},".cache\u002F","\u002Fdocs\u002Ftree\u002Fnode-modules\u002Fcache","docs\u002F22.tree\u002F0.node-modules\u002Fcache",{"title":2391,"path":2392,"stem":2393,"titleTemplate":7,"icon":2394},"public\u002F","\u002Fdocs\u002Ftree\u002Fpublic","docs\u002F22.tree\u002F0.public","vscode-icons:folder-type-public",{"title":2396,"path":2397,"stem":2398,"titleTemplate":7,"icon":2375},"README.md","\u002Fdocs\u002Ftree\u002Freadme","docs\u002F22.tree\u002F1.README",{"title":2400,"path":2401,"stem":2402,"titleTemplate":7,"icon":2357},".cnb.yml","\u002Fdocs\u002Ftree\u002Fcnb_yml","docs\u002F22.tree\u002F1.cnb_yml",{"title":2404,"path":2405,"stem":2406,"titleTemplate":7,"icon":2407},".env","\u002Fdocs\u002Ftree\u002Fenv","docs\u002F22.tree\u002F1.env","vscode-icons:file-type-dotenv",{"title":2409,"path":2410,"stem":2411,"titleTemplate":7,"icon":2412},".gitignore","\u002Fdocs\u002Ftree\u002Fgitignore","docs\u002F22.tree\u002F1.gitignore","vscode-icons:file-type-git",{"title":2414,"path":2415,"stem":2416,"titleTemplate":7,"icon":2417},"package.json","\u002Fdocs\u002Ftree\u002Fpackage","docs\u002F22.tree\u002F1.package","vscode-icons:file-type-npm",{"title":2419,"path":2420,"stem":2421,"titleTemplate":7,"icon":2417},"pnpm-lock.yaml","\u002Fdocs\u002Ftree\u002Fpnpm-lock_yaml","docs\u002F22.tree\u002F1.pnpm-lock_yaml",{"title":2423,"titleTemplate":7,"icon":2424,"path":2425,"stem":2426,"children":2427},"API","lucide:code-xml","\u002Fdocs\u002Fapi","docs\u002F44.api\u002Findex",[2428,2430,2434,2438,2442,2446,2450,2454,2458,2462,2466,2470,2474,2478,2482,2486,2490,2494,2498,2502,2506,2510,2514,2518,2522,2526,2530,2534,2538],{"title":2429,"path":2425,"stem":2426,"titleTemplate":7},"API 介绍",{"title":2431,"path":2432,"stem":2433,"titleTemplate":7},"活动 Activities","\u002Fdocs\u002Fapi\u002Factivities","docs\u002F44.api\u002Factivities",{"title":2435,"path":2436,"stem":2437,"titleTemplate":7},"AI 功能","\u002Fdocs\u002Fapi\u002Fai","docs\u002F44.api\u002Fai",{"title":2439,"path":2440,"stem":2441,"titleTemplate":7},"资源 Assets","\u002Fdocs\u002Fapi\u002Fassets","docs\u002F44.api\u002Fassets",{"title":2443,"path":2444,"stem":2445,"titleTemplate":7},"徽章 Badge","\u002Fdocs\u002Fapi\u002Fbadge","docs\u002F44.api\u002Fbadge",{"title":2447,"path":2448,"stem":2449,"titleTemplate":7},"构建 Build","\u002Fdocs\u002Fapi\u002Fbuild","docs\u002F44.api\u002Fbuild",{"title":2451,"path":2452,"stem":2453,"titleTemplate":7},"计费 Charge","\u002Fdocs\u002Fapi\u002Fcharge","docs\u002F44.api\u002Fcharge",{"title":2455,"path":2456,"stem":2457,"titleTemplate":7},"协作者 Collaborators","\u002Fdocs\u002Fapi\u002Fcollaborators","docs\u002F44.api\u002Fcollaborators",{"title":2459,"path":2460,"stem":2461,"titleTemplate":7},"事件 Event","\u002Fdocs\u002Fapi\u002Fevent","docs\u002F44.api\u002Fevent",{"title":2463,"path":2464,"stem":2465,"titleTemplate":7},"关注者 Followers","\u002Fdocs\u002Fapi\u002Ffollowers","docs\u002F44.api\u002Ffollowers",{"title":2467,"path":2468,"stem":2469,"titleTemplate":7},"Git 操作","\u002Fdocs\u002Fapi\u002Fgit","docs\u002F44.api\u002Fgit",{"title":2471,"path":2472,"stem":2473,"titleTemplate":7},"Git 设置","\u002Fdocs\u002Fapi\u002Fgit-settings","docs\u002F44.api\u002Fgit-settings",{"title":2475,"path":2476,"stem":2477,"titleTemplate":7},"问题 Issues","\u002Fdocs\u002Fapi\u002Fissues","docs\u002F44.api\u002Fissues",{"title":2479,"path":2480,"stem":2481,"titleTemplate":7},"知识库 KnowledgeBase","\u002Fdocs\u002Fapi\u002Fknowledge-base","docs\u002F44.api\u002Fknowledge-base",{"title":2483,"path":2484,"stem":2485,"titleTemplate":7},"成员 Members","\u002Fdocs\u002Fapi\u002Fmembers","docs\u002F44.api\u002Fmembers",{"title":2487,"path":2488,"stem":2489,"titleTemplate":7},"任务 Missions","\u002Fdocs\u002Fapi\u002Fmissions","docs\u002F44.api\u002Fmissions",{"title":2491,"path":2492,"stem":2493,"titleTemplate":7},"组织 Organizations","\u002Fdocs\u002Fapi\u002Forganizations","docs\u002F44.api\u002Forganizations",{"title":2495,"path":2496,"stem":2497,"titleTemplate":7},"Pull Requests","\u002Fdocs\u002Fapi\u002Fpulls","docs\u002F44.api\u002Fpulls",{"title":2499,"path":2500,"stem":2501,"titleTemplate":7},"注册表 Registries","\u002Fdocs\u002Fapi\u002Fregistries","docs\u002F44.api\u002Fregistries",{"title":2503,"path":2504,"stem":2505,"titleTemplate":7},"发布 Releases","\u002Fdocs\u002Fapi\u002Freleases","docs\u002F44.api\u002Freleases",{"title":2507,"path":2508,"stem":2509,"titleTemplate":7},"代码问题","\u002Fdocs\u002Fapi\u002Frepo-code-issue","docs\u002F44.api\u002Frepo-code-issue",{"title":2511,"path":2512,"stem":2513,"titleTemplate":7},"贡献者","\u002Fdocs\u002Fapi\u002Frepo-contributor","docs\u002F44.api\u002Frepo-contributor",{"title":2515,"path":2516,"stem":2517,"titleTemplate":7},"仓库标签","\u002Fdocs\u002Fapi\u002Frepo-labels","docs\u002F44.api\u002Frepo-labels",{"title":2519,"path":2520,"stem":2521,"titleTemplate":7},"仓库 Repositories","\u002Fdocs\u002Fapi\u002Frepositories","docs\u002F44.api\u002Frepositories",{"title":2523,"path":2524,"stem":2525,"titleTemplate":7},"搜索 Search","\u002Fdocs\u002Fapi\u002Fsearch","docs\u002F44.api\u002Fsearch",{"title":2527,"path":2528,"stem":2529,"titleTemplate":7},"安全 Security","\u002Fdocs\u002Fapi\u002Fsecurity","docs\u002F44.api\u002Fsecurity",{"title":2531,"path":2532,"stem":2533,"titleTemplate":7},"星标 Starring","\u002Fdocs\u002Fapi\u002Fstarring","docs\u002F44.api\u002Fstarring",{"title":2535,"path":2536,"stem":2537,"titleTemplate":7},"用户 Users","\u002Fdocs\u002Fapi\u002Fusers","docs\u002F44.api\u002Fusers",{"title":2539,"path":2540,"stem":2541,"titleTemplate":7},"工作空间 Workspace","\u002Fdocs\u002Fapi\u002Fworkspace","docs\u002F44.api\u002Fworkspace",{"title":2543,"path":2544,"stem":2545,"children":2546,"titleTemplate":7,"icon":2555},"社区","\u002Fdocs\u002Fcommunity","docs\u002F55.community\u002Findex",[2547,2550],{"title":2548,"path":2544,"stem":2545,"titleTemplate":7,"icon":2549},"获取帮助","lucide:life-buoy",{"title":2551,"path":2552,"stem":2553,"titleTemplate":7,"icon":2554},"报告 Bug","\u002Fdocs\u002Fcommunity\u002Freporting-bugs","docs\u002F55.community\u002Freporting-bugs","lucide:bug","lucide:messages-square",{"title":2140,"titleTemplate":7,"icon":2557,"path":2558,"stem":2559,"children":2560},"lucide:layout","\u002Fdocs\u002Fexamples","docs\u002Fexamples\u002Findex",[2561,2563,2573],{"title":2562,"path":2558,"stem":2559,"titleTemplate":7},"CNB完整示例",{"title":2564,"path":2565,"stem":2566,"children":2567,"titleTemplate":7},"构建环境和开发环境","\u002Fdocs\u002Fexamples\u002Ffeatures","docs\u002Fexamples\u002F1.features\u002Findex",[2568,2569],{"title":2564,"path":2565,"stem":2566,"titleTemplate":7},{"title":2570,"path":2571,"stem":2572,"titleTemplate":7},"Issue\u002Fpr 使用场景","\u002Fdocs\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002Fexamples\u002F1.features\u002F5.layouts",{"title":2574,"path":2575,"stem":2576,"children":2577,"titleTemplate":7},"路由","\u002Fdocs\u002Fexamples\u002Frouting","docs\u002Fexamples\u002F2.routing\u002Findex",[2578,2579],{"title":2574,"path":2575,"stem":2576,"titleTemplate":7},{"title":2580,"path":2581,"stem":2582,"titleTemplate":7},"中间件","\u002Fdocs\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002Fexamples\u002F2.routing\u002Fmiddleware",{"title":2584,"path":2585,"stem":2586,"children":2587,"page":8},"Blog","\u002Fblog","blog",[2588,2592,2596,2600,2604],{"title":2589,"path":2590,"stem":2591},"提示框组件演示","\u002Fblog\u002Fdemo-feedback","blog\u002Fdemo-feedback",{"title":2593,"path":2594,"stem":2595},"DOM 操作基础","\u002Fblog\u002Fdom-manipulation","blog\u002Fdom-manipulation",{"title":2597,"path":2598,"stem":2599},"HTML 基础入门","\u002Fblog\u002Fhtml-basics","blog\u002Fhtml-basics",{"title":2601,"path":2602,"stem":2603},"JavaScript 异步编程","\u002Fblog\u002Fjavascript-async","blog\u002Fjavascript-async",{"title":2605,"path":2606,"stem":2607},"响应式网页设计","\u002Fblog\u002Fresponsive-design","blog\u002Fresponsive-design",{"id":2609,"title":2131,"body":2610,"description":5148,"extension":188,"links":7,"meta":5149,"navigation":201,"path":2132,"seo":5150,"stem":2133,"titleTemplate":7,"__hash__":5151},"docs\u002Fdocs\u002F03.build\u002F03.advanced-usage\u002F08.deploy.md",{"type":10,"value":2611,"toc":5136},[2612,2614,2617,2620,2626,2629,2647,3692,4146,4149,4152,4166,4170,4341,4344,4562,4565,4568,4773,4776,4785,4988,4991,5014,5018,5035,5119,5122,5133],[13,2613,2131],{"id":2131},[17,2615,2616],{},"云原生构建支持自定义部署流程，通过自定义部署环境、审批流程、部署流水线，实现自动化的部署流程。",[17,2618,2619],{},"操作示例：",[17,2621,2622],{},[2623,2624],"img",{"alt":30,"src":2625},"https:\u002F\u002Fdocs.cnb.cool\u002Fimages\u002Fbuild\u002Fdeploy-intro.zh.png",[21,2627,2628],{"id":2628},"自定义部署环境",[17,2630,2631,2632,2635,2636,2639,2640,2639,2643,2646],{},"在仓库根目录下添加 ",[32,2633,2634],{},".cnb\u002Ftag_deploy.yml"," 文件用于配置部署环境。\n如下示例中定义了 ",[32,2637,2638],{},"development","、",[32,2641,2642],{},"staging",[32,2644,2645],{},"production"," 三种环境，用户可在页面上选择需要部署的环境类型。",[25,2648,2652],{"className":2649,"code":2650,"language":2651,"meta":30,"style":30},"language-yaml shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","# .cnb\u002Ftag_deploy.yml\nenvironments:\n  # name: 环境名，点击该环境对应的部署按钮将触发 .cnb.yml 中的 tag_deploy.development 事件流水线\n  - name: development\n    description: Development environment\n    # 环境变量（触发流水线时，会将环境变量传入流水线，包括部署流水线、web_trigger 流水线）\n    env:\n      name: development\n      # CNB_BRANCH: 环境变量，部署事件中，为 tag 名\n      tag_name: $CNB_BRANCH\n\n  - name: staging\n    description: Staging environment\n    env:\n      name: staging\n      # CNB_BRANCH: 环境变量，部署事件中，为 tag 名\n      tag_name: $CNB_BRANCH\n\n  - name: production\n    description: Production environment\n    # 环境变量（触发流水线时，会将环境变量传入流水线，包括部署流水线、web_trigger 流水线）\n    env:\n      name: production\n      # CNB_BRANCH: 环境变量，部署事件中，为 tag 名\n      tag_name: $CNB_BRANCH\n    button:\n      - name: 创建审批单\n        # 如存在，则将作为流水线 title，否则流水线使用默认 title\n        description: 自动创建审批单流程\n        # 需要在 .cnb.yml 中自定义 web_trigger_approval 事件流水线\n        event: web_trigger_approval\n        # 权限控制，不配置则有仓库写权限的用户可触发构建\n        # 如果配置，则需要有仓库写权限，并且满足 roles 或 users 其中之一才有权限触发构建\n        permissions:\n          # roles 和 users 配置其中之一或都配置均可，二者满足其一即可\n          roles:\n            - owner\n            - developer\n          users:\n            - name1\n            - name2\n        # 传给 web_trigger_approval 事件流水线的环境变量\n        # 可继承上一级别环境变量，优先级高于上一级别环境变量\n        env:\n          name1: value1\n          name2: value2\n\n    # 部署前置条件检查（支持对环境、元数据、审批流程的检查），满足所有前置条件才可进行部署操作\n    require:\n      # 1 对部署环境是否满足要求的检查\n\n      # 1.1 要求 development 环境部署成功\n      - environmentName: development\n\n      # 1.2 要求 staging 环境部署成功 30 分钟后\n      - environmentName: staging\n        after: 1800\n\n      # 2 对元数据是否满足要求的检查\n\n      # 2.1 键值 key1 对应的 value 不为空，即有值\n      - annotation: key1\n\n      # 2.2 键值 key1 对应的 value 值需等于 value1\n      - annotation: key1\n        expect:\n          eq: value1\n\n      # 2.3 键值 key2 对应的 value 值需大于 1 且小于 10\n      - annotation: key2\n        expect:\n          and:\n            gt: 1\n            lt: 10\n        # 自定义按钮，点击可触发执行 web_trigger_annotation 事件。\n        # 可定义与 require 信息有关的按钮事件，当 require 满足条件后隐藏按钮\n        button:\n          - name: 生成元数据\n            event: web_trigger_annotation\n            # 如存在，则将作为流水线 title，否则流水线使用默认 title\n            description: 生成元数据流程\n            # 权限控制，不配置则有仓库写权限的用户可触发构建\n            # 如果配置，则需要有仓库写权限，并且满足 roles 或 users 其中之一才有权限触发构建\n            permissions:\n              # roles 和 users 配置其中之一或都配置均可，二者满足其一即可\n              roles:\n                - owner\n                - developer\n              users:\n                - name1\n                - name2\n            # 传给 web_trigger_annotation 事件流水线的环境变量\n            # 可继承上一级别环境变量，优先级高于上一级别环境变量\n            env:\n              name1: value1\n              name2: value2\n\n      # 3 对审批流程是否满足要求的检查（可按以下方式自定义审批流程）\n      # - 审批顺序：如下 1、2、3 审批流程需按顺序进行，即 1 审批通过，2 才能进行审批。1、2、3 审批流程全部通过才算通过审批\n      # - 审批操作：包括 同意、拒绝。一人同意即算通过。如果拒绝，其他审批人无法再操作，直到拒绝的审批人再修改审批结果为同意\n\n      # 3.1 按用户名审批，其中一人审批通过即可\n      - approver:\n          users:\n            - user1\n            - user2\n            - user3\n        title: 测试审批\n\n      # 3.2 按角色审批，其中一人审批通过即可\n      - approver:\n          roles:\n            - developer\n            - master\n        title: 开发审批\n\n      # 3.3 按用户名或角色审批（审批人满足 users 或 roles 其一即可），其中一人审批通过才行\n      - approver:\n          users:\n            - user4\n            - user5\n          roles:\n            - master\n            - owner\n        title: 运维审批\n\n    # 自定义部署按钮（缺省值：默认展示一个部署按钮）\n    # 使用场景：有多个不同模块（例如仓库、CI、制品库等），需要分开独立部署时，可以配置多个不同的按钮\n    # 注意：部署流水线中要区分是哪个模块，可以通过传入流水线的环境变量来区分\n    deploy:\n      - name: 部署按钮名1\n        description: 部署按钮描述\n        # 环境变量（触发部署流水线时，会将环境变量传入流水线），优先级高于上一级 env\n        env:\n          name1: value1\n          name2: value2\n      - name: 部署按钮名2\n        description: 部署按钮描述\n        # 环境变量（触发部署流水线时，会将环境变量传入流水线），优先级高于上一级 env\n        env:\n          name1: value1\n          name2: value2\n","yaml",[32,2653,2654,2660,2668,2673,2686,2696,2701,2708,2717,2722,2732,2737,2748,2757,2763,2772,2776,2785,2789,2800,2809,2814,2820,2828,2833,2842,2849,2861,2866,2876,2881,2891,2896,2901,2909,2914,2921,2929,2936,2943,2951,2958,2963,2968,2975,2985,2995,2999,3004,3012,3018,3022,3027,3039,3043,3048,3058,3069,3074,3080,3084,3089,3102,3106,3111,3121,3129,3138,3142,3147,3158,3164,3171,3181,3191,3196,3202,3209,3222,3233,3238,3248,3253,3259,3266,3271,3278,3285,3292,3299,3305,3311,3316,3322,3329,3339,3349,3353,3359,3364,3369,3374,3380,3390,3397,3405,3413,3421,3432,3437,3442,3451,3458,3465,3473,3483,3488,3494,3503,3510,3518,3526,3533,3540,3547,3557,3562,3568,3574,3580,3588,3600,3610,3616,3623,3632,3641,3653,3662,3667,3674,3683],{"__ignoreMap":30},[35,2655,2656],{"class":37,"line":38},[35,2657,2659],{"class":2658},"sWuyu","# .cnb\u002Ftag_deploy.yml\n",[35,2661,2662,2665],{"class":37,"line":90},[35,2663,2664],{"class":93},"environments",[35,2666,2667],{"class":86},":\n",[35,2669,2670],{"class":37,"line":112},[35,2671,2672],{"class":2658},"  # name: 环境名，点击该环境对应的部署按钮将触发 .cnb.yml 中的 tag_deploy.development 事件流水线\n",[35,2674,2675,2678,2681,2683],{"class":37,"line":162},[35,2676,2677],{"class":86},"  -",[35,2679,2680],{"class":93}," name",[35,2682,59],{"class":86},[35,2684,2685],{"class":45}," development\n",[35,2687,2688,2691,2693],{"class":37,"line":166},[35,2689,2690],{"class":93},"    description",[35,2692,59],{"class":86},[35,2694,2695],{"class":45}," Development environment\n",[35,2697,2698],{"class":37,"line":170},[35,2699,2700],{"class":2658},"    # 环境变量（触发流水线时，会将环境变量传入流水线，包括部署流水线、web_trigger 流水线）\n",[35,2702,2703,2706],{"class":37,"line":174},[35,2704,2705],{"class":93},"    env",[35,2707,2667],{"class":86},[35,2709,2710,2713,2715],{"class":37,"line":178},[35,2711,2712],{"class":93},"      name",[35,2714,59],{"class":86},[35,2716,2685],{"class":45},[35,2718,2719],{"class":37,"line":181},[35,2720,2721],{"class":2658},"      # CNB_BRANCH: 环境变量，部署事件中，为 tag 名\n",[35,2723,2724,2727,2729],{"class":37,"line":185},[35,2725,2726],{"class":93},"      tag_name",[35,2728,59],{"class":86},[35,2730,2731],{"class":45}," $CNB_BRANCH\n",[35,2733,2734],{"class":37,"line":1000},[35,2735,2736],{"emptyLinePlaceholder":201},"\n",[35,2738,2739,2741,2743,2745],{"class":37,"line":1025},[35,2740,2677],{"class":86},[35,2742,2680],{"class":93},[35,2744,59],{"class":86},[35,2746,2747],{"class":45}," staging\n",[35,2749,2750,2752,2754],{"class":37,"line":1256},[35,2751,2690],{"class":93},[35,2753,59],{"class":86},[35,2755,2756],{"class":45}," Staging environment\n",[35,2758,2759,2761],{"class":37,"line":164},[35,2760,2705],{"class":93},[35,2762,2667],{"class":86},[35,2764,2766,2768,2770],{"class":37,"line":2765},15,[35,2767,2712],{"class":93},[35,2769,59],{"class":86},[35,2771,2747],{"class":45},[35,2773,2774],{"class":37,"line":157},[35,2775,2721],{"class":2658},[35,2777,2779,2781,2783],{"class":37,"line":2778},17,[35,2780,2726],{"class":93},[35,2782,59],{"class":86},[35,2784,2731],{"class":45},[35,2786,2787],{"class":37,"line":864},[35,2788,2736],{"emptyLinePlaceholder":201},[35,2790,2791,2793,2795,2797],{"class":37,"line":881},[35,2792,2677],{"class":86},[35,2794,2680],{"class":93},[35,2796,59],{"class":86},[35,2798,2799],{"class":45}," production\n",[35,2801,2802,2804,2806],{"class":37,"line":1009},[35,2803,2690],{"class":93},[35,2805,59],{"class":86},[35,2807,2808],{"class":45}," Production environment\n",[35,2810,2812],{"class":37,"line":2811},21,[35,2813,2700],{"class":2658},[35,2815,2816,2818],{"class":37,"line":732},[35,2817,2705],{"class":93},[35,2819,2667],{"class":86},[35,2821,2822,2824,2826],{"class":37,"line":461},[35,2823,2712],{"class":93},[35,2825,59],{"class":86},[35,2827,2799],{"class":45},[35,2829,2831],{"class":37,"line":2830},24,[35,2832,2721],{"class":2658},[35,2834,2836,2838,2840],{"class":37,"line":2835},25,[35,2837,2726],{"class":93},[35,2839,59],{"class":86},[35,2841,2731],{"class":45},[35,2843,2844,2847],{"class":37,"line":1396},[35,2845,2846],{"class":93},"    button",[35,2848,2667],{"class":86},[35,2850,2851,2854,2856,2858],{"class":37,"line":1528},[35,2852,2853],{"class":86},"      -",[35,2855,2680],{"class":93},[35,2857,59],{"class":86},[35,2859,2860],{"class":45}," 创建审批单\n",[35,2862,2863],{"class":37,"line":1674},[35,2864,2865],{"class":2658},"        # 如存在，则将作为流水线 title，否则流水线使用默认 title\n",[35,2867,2868,2871,2873],{"class":37,"line":472},[35,2869,2870],{"class":93},"        description",[35,2872,59],{"class":86},[35,2874,2875],{"class":45}," 自动创建审批单流程\n",[35,2877,2878],{"class":37,"line":1014},[35,2879,2880],{"class":2658},"        # 需要在 .cnb.yml 中自定义 web_trigger_approval 事件流水线\n",[35,2882,2883,2886,2888],{"class":37,"line":1937},[35,2884,2885],{"class":93},"        event",[35,2887,59],{"class":86},[35,2889,2890],{"class":45}," web_trigger_approval\n",[35,2892,2893],{"class":37,"line":183},[35,2894,2895],{"class":2658},"        # 权限控制，不配置则有仓库写权限的用户可触发构建\n",[35,2897,2898],{"class":37,"line":729},[35,2899,2900],{"class":2658},"        # 如果配置，则需要有仓库写权限，并且满足 roles 或 users 其中之一才有权限触发构建\n",[35,2902,2904,2907],{"class":37,"line":2903},34,[35,2905,2906],{"class":93},"        permissions",[35,2908,2667],{"class":86},[35,2910,2911],{"class":37,"line":740},[35,2912,2913],{"class":2658},"          # roles 和 users 配置其中之一或都配置均可，二者满足其一即可\n",[35,2915,2916,2919],{"class":37,"line":187},[35,2917,2918],{"class":93},"          roles",[35,2920,2667],{"class":86},[35,2922,2923,2926],{"class":37,"line":329},[35,2924,2925],{"class":86},"            -",[35,2927,2928],{"class":45}," owner\n",[35,2930,2931,2933],{"class":37,"line":873},[35,2932,2925],{"class":86},[35,2934,2935],{"class":45}," developer\n",[35,2937,2938,2941],{"class":37,"line":1814},[35,2939,2940],{"class":93},"          users",[35,2942,2667],{"class":86},[35,2944,2946,2948],{"class":37,"line":2945},40,[35,2947,2925],{"class":86},[35,2949,2950],{"class":45}," name1\n",[35,2952,2953,2955],{"class":37,"line":1017},[35,2954,2925],{"class":86},[35,2956,2957],{"class":45}," name2\n",[35,2959,2960],{"class":37,"line":884},[35,2961,2962],{"class":2658},"        # 传给 web_trigger_approval 事件流水线的环境变量\n",[35,2964,2965],{"class":37,"line":154},[35,2966,2967],{"class":2658},"        # 可继承上一级别环境变量，优先级高于上一级别环境变量\n",[35,2969,2970,2973],{"class":37,"line":876},[35,2971,2972],{"class":93},"        env",[35,2974,2667],{"class":86},[35,2976,2977,2980,2982],{"class":37,"line":1006},[35,2978,2979],{"class":93},"          name1",[35,2981,59],{"class":86},[35,2983,2984],{"class":45}," value1\n",[35,2986,2987,2990,2992],{"class":37,"line":1817},[35,2988,2989],{"class":93},"          name2",[35,2991,59],{"class":86},[35,2993,2994],{"class":45}," value2\n",[35,2996,2997],{"class":37,"line":1803},[35,2998,2736],{"emptyLinePlaceholder":201},[35,3000,3001],{"class":37,"line":743},[35,3002,3003],{"class":2658},"    # 部署前置条件检查（支持对环境、元数据、审批流程的检查），满足所有前置条件才可进行部署操作\n",[35,3005,3007,3010],{"class":37,"line":3006},49,[35,3008,3009],{"class":93},"    require",[35,3011,2667],{"class":86},[35,3013,3015],{"class":37,"line":3014},50,[35,3016,3017],{"class":2658},"      # 1 对部署环境是否满足要求的检查\n",[35,3019,3020],{"class":37,"line":1679},[35,3021,2736],{"emptyLinePlaceholder":201},[35,3023,3024],{"class":37,"line":316},[35,3025,3026],{"class":2658},"      # 1.1 要求 development 环境部署成功\n",[35,3028,3030,3032,3035,3037],{"class":37,"line":3029},53,[35,3031,2853],{"class":86},[35,3033,3034],{"class":93}," environmentName",[35,3036,59],{"class":86},[35,3038,2685],{"class":45},[35,3040,3041],{"class":37,"line":469},[35,3042,2736],{"emptyLinePlaceholder":201},[35,3044,3045],{"class":37,"line":172},[35,3046,3047],{"class":2658},"      # 1.2 要求 staging 环境部署成功 30 分钟后\n",[35,3049,3050,3052,3054,3056],{"class":37,"line":726},[35,3051,2853],{"class":86},[35,3053,3034],{"class":93},[35,3055,59],{"class":86},[35,3057,2747],{"class":45},[35,3059,3060,3063,3065],{"class":37,"line":160},[35,3061,3062],{"class":93},"        after",[35,3064,59],{"class":86},[35,3066,3068],{"class":3067},"sYRBq"," 1800\n",[35,3070,3072],{"class":37,"line":3071},58,[35,3073,2736],{"emptyLinePlaceholder":201},[35,3075,3077],{"class":37,"line":3076},59,[35,3078,3079],{"class":2658},"      # 2 对元数据是否满足要求的检查\n",[35,3081,3082],{"class":37,"line":313},[35,3083,2736],{"emptyLinePlaceholder":201},[35,3085,3086],{"class":37,"line":1798},[35,3087,3088],{"class":2658},"      # 2.1 键值 key1 对应的 value 不为空，即有值\n",[35,3090,3092,3094,3097,3099],{"class":37,"line":3091},62,[35,3093,2853],{"class":86},[35,3095,3096],{"class":93}," annotation",[35,3098,59],{"class":86},[35,3100,3101],{"class":45}," key1\n",[35,3103,3104],{"class":37,"line":1533},[35,3105,2736],{"emptyLinePlaceholder":201},[35,3107,3108],{"class":37,"line":321},[35,3109,3110],{"class":2658},"      # 2.2 键值 key1 对应的 value 值需等于 value1\n",[35,3112,3113,3115,3117,3119],{"class":37,"line":326},[35,3114,2853],{"class":86},[35,3116,3096],{"class":93},[35,3118,59],{"class":86},[35,3120,3101],{"class":45},[35,3122,3124,3127],{"class":37,"line":3123},66,[35,3125,3126],{"class":93},"        expect",[35,3128,2667],{"class":86},[35,3130,3131,3134,3136],{"class":37,"line":466},[35,3132,3133],{"class":93},"          eq",[35,3135,59],{"class":86},[35,3137,2984],{"class":45},[35,3139,3140],{"class":37,"line":1947},[35,3141,2736],{"emptyLinePlaceholder":201},[35,3143,3144],{"class":37,"line":1540},[35,3145,3146],{"class":2658},"      # 2.3 键值 key2 对应的 value 值需大于 1 且小于 10\n",[35,3148,3149,3151,3153,3155],{"class":37,"line":1003},[35,3150,2853],{"class":86},[35,3152,3096],{"class":93},[35,3154,59],{"class":86},[35,3156,3157],{"class":45}," key2\n",[35,3159,3160,3162],{"class":37,"line":1391},[35,3161,3126],{"class":93},[35,3163,2667],{"class":86},[35,3165,3166,3169],{"class":37,"line":1266},[35,3167,3168],{"class":93},"          and",[35,3170,2667],{"class":86},[35,3172,3173,3176,3178],{"class":37,"line":337},[35,3174,3175],{"class":93},"            gt",[35,3177,59],{"class":86},[35,3179,3180],{"class":3067}," 1\n",[35,3182,3183,3186,3188],{"class":37,"line":332},[35,3184,3185],{"class":93},"            lt",[35,3187,59],{"class":86},[35,3189,3190],{"class":3067}," 10\n",[35,3192,3193],{"class":37,"line":1022},[35,3194,3195],{"class":2658},"        # 自定义按钮，点击可触发执行 web_trigger_annotation 事件。\n",[35,3197,3199],{"class":37,"line":3198},76,[35,3200,3201],{"class":2658},"        # 可定义与 require 信息有关的按钮事件，当 require 满足条件后隐藏按钮\n",[35,3203,3204,3207],{"class":37,"line":475},[35,3205,3206],{"class":93},"        button",[35,3208,2667],{"class":86},[35,3210,3212,3215,3217,3219],{"class":37,"line":3211},78,[35,3213,3214],{"class":86},"          -",[35,3216,2680],{"class":93},[35,3218,59],{"class":86},[35,3220,3221],{"class":45}," 生成元数据\n",[35,3223,3225,3228,3230],{"class":37,"line":3224},79,[35,3226,3227],{"class":93},"            event",[35,3229,59],{"class":86},[35,3231,3232],{"class":45}," web_trigger_annotation\n",[35,3234,3235],{"class":37,"line":737},[35,3236,3237],{"class":2658},"            # 如存在，则将作为流水线 title，否则流水线使用默认 title\n",[35,3239,3240,3243,3245],{"class":37,"line":1253},[35,3241,3242],{"class":93},"            description",[35,3244,59],{"class":86},[35,3246,3247],{"class":45}," 生成元数据流程\n",[35,3249,3250],{"class":37,"line":612},[35,3251,3252],{"class":2658},"            # 权限控制，不配置则有仓库写权限的用户可触发构建\n",[35,3254,3256],{"class":37,"line":3255},83,[35,3257,3258],{"class":2658},"            # 如果配置，则需要有仓库写权限，并且满足 roles 或 users 其中之一才有权限触发构建\n",[35,3260,3261,3264],{"class":37,"line":609},[35,3262,3263],{"class":93},"            permissions",[35,3265,2667],{"class":86},[35,3267,3268],{"class":37,"line":1667},[35,3269,3270],{"class":2658},"              # roles 和 users 配置其中之一或都配置均可，二者满足其一即可\n",[35,3272,3273,3276],{"class":37,"line":1261},[35,3274,3275],{"class":93},"              roles",[35,3277,2667],{"class":86},[35,3279,3280,3283],{"class":37,"line":1382},[35,3281,3282],{"class":86},"                -",[35,3284,2928],{"class":45},[35,3286,3288,3290],{"class":37,"line":3287},88,[35,3289,3282],{"class":86},[35,3291,2935],{"class":45},[35,3293,3294,3297],{"class":37,"line":176},[35,3295,3296],{"class":93},"              users",[35,3298,2667],{"class":86},[35,3300,3301,3303],{"class":37,"line":484},[35,3302,3282],{"class":86},[35,3304,2950],{"class":45},[35,3306,3307,3309],{"class":37,"line":861},[35,3308,3282],{"class":86},[35,3310,2957],{"class":45},[35,3312,3313],{"class":37,"line":168},[35,3314,3315],{"class":2658},"            # 传给 web_trigger_annotation 事件流水线的环境变量\n",[35,3317,3319],{"class":37,"line":3318},93,[35,3320,3321],{"class":2658},"            # 可继承上一级别环境变量，优先级高于上一级别环境变量\n",[35,3323,3324,3327],{"class":37,"line":1399},[35,3325,3326],{"class":93},"            env",[35,3328,2667],{"class":86},[35,3330,3332,3335,3337],{"class":37,"line":3331},95,[35,3333,3334],{"class":93},"              name1",[35,3336,59],{"class":86},[35,3338,2984],{"class":45},[35,3340,3342,3345,3347],{"class":37,"line":3341},96,[35,3343,3344],{"class":93},"              name2",[35,3346,59],{"class":86},[35,3348,2994],{"class":45},[35,3350,3351],{"class":37,"line":481},[35,3352,2736],{"emptyLinePlaceholder":201},[35,3354,3356],{"class":37,"line":3355},98,[35,3357,3358],{"class":2658},"      # 3 对审批流程是否满足要求的检查（可按以下方式自定义审批流程）\n",[35,3360,3361],{"class":37,"line":478},[35,3362,3363],{"class":2658},"      # - 审批顺序：如下 1、2、3 审批流程需按顺序进行，即 1 审批通过，2 才能进行审批。1、2、3 审批流程全部通过才算通过审批\n",[35,3365,3366],{"class":37,"line":1940},[35,3367,3368],{"class":2658},"      # - 审批操作：包括 同意、拒绝。一人同意即算通过。如果拒绝，其他审批人无法再操作，直到拒绝的审批人再修改审批结果为同意\n",[35,3370,3372],{"class":37,"line":3371},101,[35,3373,2736],{"emptyLinePlaceholder":201},[35,3375,3377],{"class":37,"line":3376},102,[35,3378,3379],{"class":2658},"      # 3.1 按用户名审批，其中一人审批通过即可\n",[35,3381,3383,3385,3388],{"class":37,"line":3382},103,[35,3384,2853],{"class":86},[35,3386,3387],{"class":93}," approver",[35,3389,2667],{"class":86},[35,3391,3393,3395],{"class":37,"line":3392},104,[35,3394,2940],{"class":93},[35,3396,2667],{"class":86},[35,3398,3400,3402],{"class":37,"line":3399},105,[35,3401,2925],{"class":86},[35,3403,3404],{"class":45}," user1\n",[35,3406,3408,3410],{"class":37,"line":3407},106,[35,3409,2925],{"class":86},[35,3411,3412],{"class":45}," user2\n",[35,3414,3416,3418],{"class":37,"line":3415},107,[35,3417,2925],{"class":86},[35,3419,3420],{"class":45}," user3\n",[35,3422,3424,3427,3429],{"class":37,"line":3423},108,[35,3425,3426],{"class":93},"        title",[35,3428,59],{"class":86},[35,3430,3431],{"class":45}," 测试审批\n",[35,3433,3435],{"class":37,"line":3434},109,[35,3436,2736],{"emptyLinePlaceholder":201},[35,3438,3439],{"class":37,"line":1695},[35,3440,3441],{"class":2658},"      # 3.2 按角色审批，其中一人审批通过即可\n",[35,3443,3445,3447,3449],{"class":37,"line":3444},111,[35,3446,2853],{"class":86},[35,3448,3387],{"class":93},[35,3450,2667],{"class":86},[35,3452,3454,3456],{"class":37,"line":3453},112,[35,3455,2918],{"class":93},[35,3457,2667],{"class":86},[35,3459,3461,3463],{"class":37,"line":3460},113,[35,3462,2925],{"class":86},[35,3464,2935],{"class":45},[35,3466,3468,3470],{"class":37,"line":3467},114,[35,3469,2925],{"class":86},[35,3471,3472],{"class":45}," master\n",[35,3474,3476,3478,3480],{"class":37,"line":3475},115,[35,3477,3426],{"class":93},[35,3479,59],{"class":86},[35,3481,3482],{"class":45}," 开发审批\n",[35,3484,3486],{"class":37,"line":3485},116,[35,3487,2736],{"emptyLinePlaceholder":201},[35,3489,3491],{"class":37,"line":3490},117,[35,3492,3493],{"class":2658},"      # 3.3 按用户名或角色审批（审批人满足 users 或 roles 其一即可），其中一人审批通过才行\n",[35,3495,3497,3499,3501],{"class":37,"line":3496},118,[35,3498,2853],{"class":86},[35,3500,3387],{"class":93},[35,3502,2667],{"class":86},[35,3504,3506,3508],{"class":37,"line":3505},119,[35,3507,2940],{"class":93},[35,3509,2667],{"class":86},[35,3511,3513,3515],{"class":37,"line":3512},120,[35,3514,2925],{"class":86},[35,3516,3517],{"class":45}," user4\n",[35,3519,3521,3523],{"class":37,"line":3520},121,[35,3522,2925],{"class":86},[35,3524,3525],{"class":45}," user5\n",[35,3527,3529,3531],{"class":37,"line":3528},122,[35,3530,2918],{"class":93},[35,3532,2667],{"class":86},[35,3534,3536,3538],{"class":37,"line":3535},123,[35,3537,2925],{"class":86},[35,3539,3472],{"class":45},[35,3541,3543,3545],{"class":37,"line":3542},124,[35,3544,2925],{"class":86},[35,3546,2928],{"class":45},[35,3548,3550,3552,3554],{"class":37,"line":3549},125,[35,3551,3426],{"class":93},[35,3553,59],{"class":86},[35,3555,3556],{"class":45}," 运维审批\n",[35,3558,3560],{"class":37,"line":3559},126,[35,3561,2736],{"emptyLinePlaceholder":201},[35,3563,3565],{"class":37,"line":3564},127,[35,3566,3567],{"class":2658},"    # 自定义部署按钮（缺省值：默认展示一个部署按钮）\n",[35,3569,3571],{"class":37,"line":3570},128,[35,3572,3573],{"class":2658},"    # 使用场景：有多个不同模块（例如仓库、CI、制品库等），需要分开独立部署时，可以配置多个不同的按钮\n",[35,3575,3577],{"class":37,"line":3576},129,[35,3578,3579],{"class":2658},"    # 注意：部署流水线中要区分是哪个模块，可以通过传入流水线的环境变量来区分\n",[35,3581,3583,3586],{"class":37,"line":3582},130,[35,3584,3585],{"class":93},"    deploy",[35,3587,2667],{"class":86},[35,3589,3591,3593,3595,3597],{"class":37,"line":3590},131,[35,3592,2853],{"class":86},[35,3594,2680],{"class":93},[35,3596,59],{"class":86},[35,3598,3599],{"class":45}," 部署按钮名1\n",[35,3601,3603,3605,3607],{"class":37,"line":3602},132,[35,3604,2870],{"class":93},[35,3606,59],{"class":86},[35,3608,3609],{"class":45}," 部署按钮描述\n",[35,3611,3613],{"class":37,"line":3612},133,[35,3614,3615],{"class":2658},"        # 环境变量（触发部署流水线时，会将环境变量传入流水线），优先级高于上一级 env\n",[35,3617,3619,3621],{"class":37,"line":3618},134,[35,3620,2972],{"class":93},[35,3622,2667],{"class":86},[35,3624,3626,3628,3630],{"class":37,"line":3625},135,[35,3627,2979],{"class":93},[35,3629,59],{"class":86},[35,3631,2984],{"class":45},[35,3633,3635,3637,3639],{"class":37,"line":3634},136,[35,3636,2989],{"class":93},[35,3638,59],{"class":86},[35,3640,2994],{"class":45},[35,3642,3644,3646,3648,3650],{"class":37,"line":3643},137,[35,3645,2853],{"class":86},[35,3647,2680],{"class":93},[35,3649,59],{"class":86},[35,3651,3652],{"class":45}," 部署按钮名2\n",[35,3654,3656,3658,3660],{"class":37,"line":3655},138,[35,3657,2870],{"class":93},[35,3659,59],{"class":86},[35,3661,3609],{"class":45},[35,3663,3665],{"class":37,"line":3664},139,[35,3666,3615],{"class":2658},[35,3668,3670,3672],{"class":37,"line":3669},140,[35,3671,2972],{"class":93},[35,3673,2667],{"class":86},[35,3675,3677,3679,3681],{"class":37,"line":3676},141,[35,3678,2979],{"class":93},[35,3680,59],{"class":86},[35,3682,2984],{"class":45},[35,3684,3686,3688,3690],{"class":37,"line":3685},142,[35,3687,2989],{"class":93},[35,3689,59],{"class":86},[35,3691,2994],{"class":45},[123,3693,3694,3711,3717,3723,3807,3833],{},[126,3695,3696,3699,3700,3703,3704,3706,3707,3710],{},[32,3697,3698],{},"name",": 必填，环境名，需唯一。例如 ",[32,3701,3702],{},"name: development","，点击该环境对应的部署按钮，将触发 ",[32,3705,2400],{}," 中的 ",[32,3708,3709],{},"tag_deploy.development"," 事件流水线",[126,3712,3713,3716],{},[32,3714,3715],{},"description",": 选填，环境描述",[126,3718,3719,3722],{},[32,3720,3721],{},"env",": 选填，传给部署流水线的环境变量。用户可根据需要传入需要的环境变量。",[126,3724,3725,3728,3729],{},[32,3726,3727],{},"button",": 选填，对象数组格式，自定义按钮。点击按钮可触发云原生构建流水线，执行参数 event 对应的事件。",[123,3730,3731,3736,3741,3747,3752],{},[126,3732,3733,3735],{},[32,3734,3698],{},": 必填，按钮名。",[126,3737,3738,3740],{},[32,3739,3715],{},": 选填，按钮描述。如存在，则将作为流水线 title，否则流水线使用默认 title。",[126,3742,3743,3746],{},[32,3744,3745],{},"event",": 必填，自定义事件，仅支持 web_trigger 事件。",[126,3748,3749,3751],{},[32,3750,3721],{},": 选填，传给 web_trigger 流水线的环境变量，可继承上一级别环境变量，优先级高于上一级别环境变量。",[126,3753,3754,3757,3758,3761,3762,3765,3766,3768,3769],{},[32,3755,3756],{},"permissions",": 选填，权限控制，满足 ",[32,3759,3760],{},"users"," 或 ",[32,3763,3764],{},"roles"," 其中之一即有权限触发构建（还需要有仓库写权限）。如果未配置 ",[32,3767,3756],{},"，则有仓库写权限即可出发构建\n",[123,3770,3771,3780],{},[126,3772,3773,3775,3776,3779],{},[32,3774,3760],{},": 选填，",[32,3777,3778],{},"Array\u003CString>","，用户名数组。可定义多个。",[126,3781,3782,3775,3784,3786,3787,3790,3791,3794,3795,3798,3799,3802,3803,3806],{},[32,3783,3764],{},[32,3785,3778],{},"，仓库角色数组。可定义多种仓库角色。\n",[32,3788,3789],{},"owner","(负责人)、",[32,3792,3793],{},"master","(管理员Administrator)、",[32,3796,3797],{},"developer","(开发者)、",[32,3800,3801],{},"reporter","(助手)、",[32,3804,3805],{},"guest","(访客)",[126,3808,3809,3812,3813,3816,3817],{},[32,3810,3811],{},"deploy",": 选填，对象数组格式，自定义部署按钮。点击按钮可触发云原生构建流水线，执行部署事件（",[32,3814,3815],{},"tag_deploy.*","）。",[123,3818,3819,3823,3828],{},[126,3820,3821,3735],{},[32,3822,3698],{},[126,3824,3825,3827],{},[32,3826,3715],{},": 选填，按钮描述。",[126,3829,3830,3832],{},[32,3831,3721],{},": 选填，传给部署流水线的环境变量，优先级高于上一级 env。",[126,3834,3835,3838,3839,3842,3843,3933,3935,3936,4097,4099,4100],{},[32,3836,3837],{},"require",": 选填，对象数组格式。部署的前置条件，需满足了前置条件（部署环境要求、元数据要求、审批流程）才可进行部署操作。",[3840,3841],"br",{},"1、部署环境要求的参数包括",[123,3844,3845,3851,3860,3871],{},[126,3846,3847,3850],{},[32,3848,3849],{},"environmentName",": 必填。环境名。",[126,3852,3853,3856,3857,3859],{},[32,3854,3855],{},"after",": 选填。时间，单位 s(秒)。表示 ",[32,3858,3849],{}," 的环境部署成功后 after 时间后才算满足前置条件。",[126,3861,3862,3864,3865,3867,3868,3870],{},[32,3863,3715],{},": 选填。",[32,3866,3837],{}," 的描述信息，附注用户理解 ",[32,3869,3837],{}," 要求的内容。",[126,3872,3873,3875,3876],{},[32,3874,3727],{},": 选填。自定义按钮，点击可触发执行 event 传入的事件。可定义与 require 信息有关的按钮事件，注意：当 require 满足条件后隐藏按钮。\n",[123,3877,3878,3882,3891,3895,3899],{},[126,3879,3880,3735],{},[32,3881,3698],{},[126,3883,3884,3886,3887,3890],{},[32,3885,3745],{},": 必填，自定义事件，仅支持 ",[32,3888,3889],{},"web_trigger_*"," 事件。",[126,3892,3893,3740],{},[32,3894,3715],{},[126,3896,3897,3751],{},[32,3898,3721],{},[126,3900,3901,3757,3903,3761,3905,3765,3907,3768,3909],{},[32,3902,3756],{},[32,3904,3760],{},[32,3906,3764],{},[32,3908,3756],{},[123,3910,3911,3917],{},[126,3912,3913,3775,3915,3779],{},[32,3914,3760],{},[32,3916,3778],{},[126,3918,3919,3775,3921,3786,3923,3790,3925,3794,3927,3798,3929,3802,3931,3806],{},[32,3920,3764],{},[32,3922,3778],{},[32,3924,3789],{},[32,3926,3793],{},[32,3928,3797],{},[32,3930,3801],{},[32,3932,3805],{},[3840,3934],{},"2、元数据要求的参数包括",[123,3937,3938,3948,4033,4041],{},[126,3939,3940,3943,3944,3947],{},[32,3941,3942],{},"annotation",": 必填。元数据的 ",[32,3945,3946],{},"key"," 值。",[126,3949,3950,3953,3954,3957,3958,2639,3961,2639,3964,2639,3967,2639,3970,2639,3973,2639,3976,2639,3979,2639,3982,3985,3986],{},[32,3951,3952],{},"expect",": 选填。对元数据的 ",[32,3955,3956],{},"value"," 值的要求。对象格式，支持 ",[32,3959,3960],{},"eq",[32,3962,3963],{},"ne",[32,3965,3966],{},"gt",[32,3968,3969],{},"lt",[32,3971,3972],{},"gte",[32,3974,3975],{},"lte",[32,3977,3978],{},"and",[32,3980,3981],{},"or",[32,3983,3984],{},"reg"," 操作符。\n",[123,3987,3988,3993,3998,4003,4008,4013,4018,4023,4028],{},[126,3989,3990,3992],{},[32,3991,3960],{},": 等于",[126,3994,3995,3997],{},[32,3996,3963],{},": 不等于",[126,3999,4000,4002],{},[32,4001,3966],{},": 大于",[126,4004,4005,4007],{},[32,4006,3969],{},": 小于",[126,4009,4010,4012],{},[32,4011,3972],{},": 大于等于",[126,4014,4015,4017],{},[32,4016,3975],{},": 小于等于",[126,4019,4020,4022],{},[32,4021,3978],{},": 与",[126,4024,4025,4027],{},[32,4026,3981],{},": 或",[126,4029,4030,4032],{},[32,4031,3984],{},": 能和正则表达式匹配",[126,4034,4035,3864,4037,3867,4039,3870],{},[32,4036,3715],{},[32,4038,3837],{},[32,4040,3837],{},[126,4042,4043,3875,4045],{},[32,4044,3727],{},[123,4046,4047,4051,4055,4059,4063],{},[126,4048,4049,3735],{},[32,4050,3698],{},[126,4052,4053,3740],{},[32,4054,3715],{},[126,4056,4057,3746],{},[32,4058,3745],{},[126,4060,4061,3751],{},[32,4062,3721],{},[126,4064,4065,3757,4067,3761,4069,3765,4071,3768,4073],{},[32,4066,3756],{},[32,4068,3760],{},[32,4070,3764],{},[32,4072,3756],{},[123,4074,4075,4081],{},[126,4076,4077,3775,4079,3779],{},[32,4078,3760],{},[32,4080,3778],{},[126,4082,4083,3775,4085,3786,4087,3790,4089,3794,4091,3798,4093,3802,4095,3806],{},[32,4084,3764],{},[32,4086,3778],{},[32,4088,3789],{},[32,4090,3793],{},[32,4092,3797],{},[32,4094,3801],{},[32,4096,3805],{},[3840,4098],{},"3、审批流程要求的参数包括",[123,4101,4102,4136],{},[126,4103,4104,4107,4108,3761,4110,4113,4114],{},[32,4105,4106],{},"approver",": 必填，审批人定义，满足 ",[32,4109,3760],{},[32,4111,4112],{},"role"," 的审批人中，一人审批通过即可。\n",[123,4115,4116,4121],{},[126,4117,4118,4120],{},[32,4119,3760],{},": 用户名数组。可定义多个审批人。",[126,4122,4123,4125,4126,3790,4128,3794,4130,3798,4132,3802,4134,3806],{},[32,4124,3764],{},": 仓库角色数组。可定义多种仓库角色。\n",[32,4127,3789],{},[32,4129,3793],{},[32,4131,3797],{},[32,4133,3801],{},[32,4135,3805],{},[126,4137,4138,4141,4142,4145],{},[32,4139,4140],{},"title",": 选填，审批标题，如 ",[32,4143,4144],{},"测试审批","。",[21,4147,4148],{"id":4148},"自定义部署前置条件",[17,4150,4151],{},"对于每个环境可定义部署前置条件，只有满足所有前置条件才可进行部署操作。可定义如下三种前置条件：",[123,4153,4154,4160,4163],{},[126,4155,4156,4157,4159],{},"环境部署要求：要求指定环境已经部署成功，且满足 ",[32,4158,3855],{}," 部署成功时间要求",[126,4161,4162],{},"元数据值要求：要求指定元数据对应的值是否满足要求",[126,4164,4165],{},"审批流程要求：可自定义审批流程指定审批人，并进行审批操作，当全部审批流程都审批通过后，才算满足要求",[4167,4168,4169],"h3",{"id":4169},"环境部署前置条件示例",[25,4171,4173],{"className":2649,"code":4172,"language":2651,"meta":30,"style":30},"# .cnb\u002Ftag_deploy.yml\nenvironments:\n  - name: development\n    description: Development environment\n    env:\n      name: development\n      tag_name: $CNB_BRANCH\n\n  - name: staging\n    description: Staging environment\n    env:\n      name: staging\n      tag_name: $CNB_BRANCH\n    require:\n      # 要求 development 环境部署成功\n      - environmentName: development\n\n  - name: production\n    description: Production environment\n    require:\n      # 要求 staging 环境部署成功 30 分钟后\n      - environmentName: staging\n        after: 1800\n",[32,4174,4175,4179,4185,4195,4203,4209,4217,4225,4229,4239,4247,4253,4261,4269,4275,4280,4290,4294,4304,4312,4318,4323,4333],{"__ignoreMap":30},[35,4176,4177],{"class":37,"line":38},[35,4178,2659],{"class":2658},[35,4180,4181,4183],{"class":37,"line":90},[35,4182,2664],{"class":93},[35,4184,2667],{"class":86},[35,4186,4187,4189,4191,4193],{"class":37,"line":112},[35,4188,2677],{"class":86},[35,4190,2680],{"class":93},[35,4192,59],{"class":86},[35,4194,2685],{"class":45},[35,4196,4197,4199,4201],{"class":37,"line":162},[35,4198,2690],{"class":93},[35,4200,59],{"class":86},[35,4202,2695],{"class":45},[35,4204,4205,4207],{"class":37,"line":166},[35,4206,2705],{"class":93},[35,4208,2667],{"class":86},[35,4210,4211,4213,4215],{"class":37,"line":170},[35,4212,2712],{"class":93},[35,4214,59],{"class":86},[35,4216,2685],{"class":45},[35,4218,4219,4221,4223],{"class":37,"line":174},[35,4220,2726],{"class":93},[35,4222,59],{"class":86},[35,4224,2731],{"class":45},[35,4226,4227],{"class":37,"line":178},[35,4228,2736],{"emptyLinePlaceholder":201},[35,4230,4231,4233,4235,4237],{"class":37,"line":181},[35,4232,2677],{"class":86},[35,4234,2680],{"class":93},[35,4236,59],{"class":86},[35,4238,2747],{"class":45},[35,4240,4241,4243,4245],{"class":37,"line":185},[35,4242,2690],{"class":93},[35,4244,59],{"class":86},[35,4246,2756],{"class":45},[35,4248,4249,4251],{"class":37,"line":1000},[35,4250,2705],{"class":93},[35,4252,2667],{"class":86},[35,4254,4255,4257,4259],{"class":37,"line":1025},[35,4256,2712],{"class":93},[35,4258,59],{"class":86},[35,4260,2747],{"class":45},[35,4262,4263,4265,4267],{"class":37,"line":1256},[35,4264,2726],{"class":93},[35,4266,59],{"class":86},[35,4268,2731],{"class":45},[35,4270,4271,4273],{"class":37,"line":164},[35,4272,3009],{"class":93},[35,4274,2667],{"class":86},[35,4276,4277],{"class":37,"line":2765},[35,4278,4279],{"class":2658},"      # 要求 development 环境部署成功\n",[35,4281,4282,4284,4286,4288],{"class":37,"line":157},[35,4283,2853],{"class":86},[35,4285,3034],{"class":93},[35,4287,59],{"class":86},[35,4289,2685],{"class":45},[35,4291,4292],{"class":37,"line":2778},[35,4293,2736],{"emptyLinePlaceholder":201},[35,4295,4296,4298,4300,4302],{"class":37,"line":864},[35,4297,2677],{"class":86},[35,4299,2680],{"class":93},[35,4301,59],{"class":86},[35,4303,2799],{"class":45},[35,4305,4306,4308,4310],{"class":37,"line":881},[35,4307,2690],{"class":93},[35,4309,59],{"class":86},[35,4311,2808],{"class":45},[35,4313,4314,4316],{"class":37,"line":1009},[35,4315,3009],{"class":93},[35,4317,2667],{"class":86},[35,4319,4320],{"class":37,"line":2811},[35,4321,4322],{"class":2658},"      # 要求 staging 环境部署成功 30 分钟后\n",[35,4324,4325,4327,4329,4331],{"class":37,"line":732},[35,4326,2853],{"class":86},[35,4328,3034],{"class":93},[35,4330,59],{"class":86},[35,4332,2747],{"class":45},[35,4334,4335,4337,4339],{"class":37,"line":461},[35,4336,3062],{"class":93},[35,4338,59],{"class":86},[35,4340,3068],{"class":3067},[4167,4342,4343],{"id":4343},"元数据前置条件示例",[25,4345,4347],{"className":2649,"code":4346,"language":2651,"meta":30,"style":30},"# .cnb\u002Ftag_deploy.yml\nenvironments:\n  - name: production\n    description: Production environment\n    require:\n      # 对元数据是否满足要求的检查\n\n      # 键值 key1 对应的 value 不为空，即有值\n      - annotation: key1\n\n      # 键值 key2 对应的 value 值需等于 value1\n      - annotation: key2\n        expect:\n          eq: value2\n\n      # 键值 key3 对应的 value 值需大于 1 且小于 10\n      - annotation: key3\n        expect:\n          and:\n            gt: 1\n            lt: 10\n        # 自定义按钮，点击可触发执行 web_trigger_annotation 事件。\n        # 可定义与 require 信息有关的按钮事件，当 require 满足条件后隐藏按钮\n        button:\n          - name: 生成元数据\n            event: web_trigger_annotation\n            # 如存在，则将作为流水线 title，否则流水线使用默认 title\n            description: 生成元数据流程\n            # 传给 web_trigger_annotation 事件流水线的环境变量\n            # 可继承上一级别环境变量，优先级高于上一级别环境变量\n            env:\n              name1: value1\n              name2: value2\n",[32,4348,4349,4353,4359,4369,4377,4383,4388,4392,4397,4407,4411,4416,4426,4432,4440,4444,4449,4460,4466,4472,4480,4488,4492,4496,4502,4512,4520,4524,4532,4536,4540,4546,4554],{"__ignoreMap":30},[35,4350,4351],{"class":37,"line":38},[35,4352,2659],{"class":2658},[35,4354,4355,4357],{"class":37,"line":90},[35,4356,2664],{"class":93},[35,4358,2667],{"class":86},[35,4360,4361,4363,4365,4367],{"class":37,"line":112},[35,4362,2677],{"class":86},[35,4364,2680],{"class":93},[35,4366,59],{"class":86},[35,4368,2799],{"class":45},[35,4370,4371,4373,4375],{"class":37,"line":162},[35,4372,2690],{"class":93},[35,4374,59],{"class":86},[35,4376,2808],{"class":45},[35,4378,4379,4381],{"class":37,"line":166},[35,4380,3009],{"class":93},[35,4382,2667],{"class":86},[35,4384,4385],{"class":37,"line":170},[35,4386,4387],{"class":2658},"      # 对元数据是否满足要求的检查\n",[35,4389,4390],{"class":37,"line":174},[35,4391,2736],{"emptyLinePlaceholder":201},[35,4393,4394],{"class":37,"line":178},[35,4395,4396],{"class":2658},"      # 键值 key1 对应的 value 不为空，即有值\n",[35,4398,4399,4401,4403,4405],{"class":37,"line":181},[35,4400,2853],{"class":86},[35,4402,3096],{"class":93},[35,4404,59],{"class":86},[35,4406,3101],{"class":45},[35,4408,4409],{"class":37,"line":185},[35,4410,2736],{"emptyLinePlaceholder":201},[35,4412,4413],{"class":37,"line":1000},[35,4414,4415],{"class":2658},"      # 键值 key2 对应的 value 值需等于 value1\n",[35,4417,4418,4420,4422,4424],{"class":37,"line":1025},[35,4419,2853],{"class":86},[35,4421,3096],{"class":93},[35,4423,59],{"class":86},[35,4425,3157],{"class":45},[35,4427,4428,4430],{"class":37,"line":1256},[35,4429,3126],{"class":93},[35,4431,2667],{"class":86},[35,4433,4434,4436,4438],{"class":37,"line":164},[35,4435,3133],{"class":93},[35,4437,59],{"class":86},[35,4439,2994],{"class":45},[35,4441,4442],{"class":37,"line":2765},[35,4443,2736],{"emptyLinePlaceholder":201},[35,4445,4446],{"class":37,"line":157},[35,4447,4448],{"class":2658},"      # 键值 key3 对应的 value 值需大于 1 且小于 10\n",[35,4450,4451,4453,4455,4457],{"class":37,"line":2778},[35,4452,2853],{"class":86},[35,4454,3096],{"class":93},[35,4456,59],{"class":86},[35,4458,4459],{"class":45}," key3\n",[35,4461,4462,4464],{"class":37,"line":864},[35,4463,3126],{"class":93},[35,4465,2667],{"class":86},[35,4467,4468,4470],{"class":37,"line":881},[35,4469,3168],{"class":93},[35,4471,2667],{"class":86},[35,4473,4474,4476,4478],{"class":37,"line":1009},[35,4475,3175],{"class":93},[35,4477,59],{"class":86},[35,4479,3180],{"class":3067},[35,4481,4482,4484,4486],{"class":37,"line":2811},[35,4483,3185],{"class":93},[35,4485,59],{"class":86},[35,4487,3190],{"class":3067},[35,4489,4490],{"class":37,"line":732},[35,4491,3195],{"class":2658},[35,4493,4494],{"class":37,"line":461},[35,4495,3201],{"class":2658},[35,4497,4498,4500],{"class":37,"line":2830},[35,4499,3206],{"class":93},[35,4501,2667],{"class":86},[35,4503,4504,4506,4508,4510],{"class":37,"line":2835},[35,4505,3214],{"class":86},[35,4507,2680],{"class":93},[35,4509,59],{"class":86},[35,4511,3221],{"class":45},[35,4513,4514,4516,4518],{"class":37,"line":1396},[35,4515,3227],{"class":93},[35,4517,59],{"class":86},[35,4519,3232],{"class":45},[35,4521,4522],{"class":37,"line":1528},[35,4523,3237],{"class":2658},[35,4525,4526,4528,4530],{"class":37,"line":1674},[35,4527,3242],{"class":93},[35,4529,59],{"class":86},[35,4531,3247],{"class":45},[35,4533,4534],{"class":37,"line":472},[35,4535,3315],{"class":2658},[35,4537,4538],{"class":37,"line":1014},[35,4539,3321],{"class":2658},[35,4541,4542,4544],{"class":37,"line":1937},[35,4543,3326],{"class":93},[35,4545,2667],{"class":86},[35,4547,4548,4550,4552],{"class":37,"line":183},[35,4549,3334],{"class":93},[35,4551,59],{"class":86},[35,4553,2984],{"class":45},[35,4555,4556,4558,4560],{"class":37,"line":729},[35,4557,3344],{"class":93},[35,4559,59],{"class":86},[35,4561,2994],{"class":45},[4167,4563,4564],{"id":4564},"审批流程前置条件示例",[17,4566,4567],{},"可自定义审批流程和指定审批人。有权限的审批人可进行审批操作（同意、拒绝）。全部流程审批通过后，即算满足要求",[25,4569,4571],{"className":2649,"code":4570,"language":2651,"meta":30,"style":30},"# .cnb\u002Ftag_deploy.yml\nenvironments:\n  - name: production\n    description: Production environment\n    require:\n      # 对审批流程是否满足要求的检查（可按以下方式自定义审批流程）\n      # - 审批顺序：如下 1、2、3 审批流程需按顺序进行，即 1 审批通过，2 才能进行审批。1、2、3 审批流程全部通过才算通过审批\n      # - 审批操作：包括 同意、拒绝。一人同意即算通过。如果拒绝，其他审批人无法再操作，直到拒绝的审批人再修改审批结果为同意\n\n      # 按用户名审批，其中一人审批通过即可\n      - approver:\n          users:\n            - user1\n            - user2\n            - user3\n        title: 测试审批\n\n      # 按角色审批，其中一人审批通过即可\n      - approver:\n          roles:\n            - developer\n            - master\n        title: 开发审批\n\n      # 按用户名或角色审批（审批人满足 users 或 roles 其一即可），其中一人审批通过才行\n      - approver:\n          users:\n            - user4\n            - user5\n          roles:\n            - master\n            - owner\n        title: 运维审批\n",[32,4572,4573,4577,4583,4593,4601,4607,4612,4616,4620,4624,4629,4637,4643,4649,4655,4661,4669,4673,4678,4686,4692,4698,4704,4712,4716,4721,4729,4735,4741,4747,4753,4759,4765],{"__ignoreMap":30},[35,4574,4575],{"class":37,"line":38},[35,4576,2659],{"class":2658},[35,4578,4579,4581],{"class":37,"line":90},[35,4580,2664],{"class":93},[35,4582,2667],{"class":86},[35,4584,4585,4587,4589,4591],{"class":37,"line":112},[35,4586,2677],{"class":86},[35,4588,2680],{"class":93},[35,4590,59],{"class":86},[35,4592,2799],{"class":45},[35,4594,4595,4597,4599],{"class":37,"line":162},[35,4596,2690],{"class":93},[35,4598,59],{"class":86},[35,4600,2808],{"class":45},[35,4602,4603,4605],{"class":37,"line":166},[35,4604,3009],{"class":93},[35,4606,2667],{"class":86},[35,4608,4609],{"class":37,"line":170},[35,4610,4611],{"class":2658},"      # 对审批流程是否满足要求的检查（可按以下方式自定义审批流程）\n",[35,4613,4614],{"class":37,"line":174},[35,4615,3363],{"class":2658},[35,4617,4618],{"class":37,"line":178},[35,4619,3368],{"class":2658},[35,4621,4622],{"class":37,"line":181},[35,4623,2736],{"emptyLinePlaceholder":201},[35,4625,4626],{"class":37,"line":185},[35,4627,4628],{"class":2658},"      # 按用户名审批，其中一人审批通过即可\n",[35,4630,4631,4633,4635],{"class":37,"line":1000},[35,4632,2853],{"class":86},[35,4634,3387],{"class":93},[35,4636,2667],{"class":86},[35,4638,4639,4641],{"class":37,"line":1025},[35,4640,2940],{"class":93},[35,4642,2667],{"class":86},[35,4644,4645,4647],{"class":37,"line":1256},[35,4646,2925],{"class":86},[35,4648,3404],{"class":45},[35,4650,4651,4653],{"class":37,"line":164},[35,4652,2925],{"class":86},[35,4654,3412],{"class":45},[35,4656,4657,4659],{"class":37,"line":2765},[35,4658,2925],{"class":86},[35,4660,3420],{"class":45},[35,4662,4663,4665,4667],{"class":37,"line":157},[35,4664,3426],{"class":93},[35,4666,59],{"class":86},[35,4668,3431],{"class":45},[35,4670,4671],{"class":37,"line":2778},[35,4672,2736],{"emptyLinePlaceholder":201},[35,4674,4675],{"class":37,"line":864},[35,4676,4677],{"class":2658},"      # 按角色审批，其中一人审批通过即可\n",[35,4679,4680,4682,4684],{"class":37,"line":881},[35,4681,2853],{"class":86},[35,4683,3387],{"class":93},[35,4685,2667],{"class":86},[35,4687,4688,4690],{"class":37,"line":1009},[35,4689,2918],{"class":93},[35,4691,2667],{"class":86},[35,4693,4694,4696],{"class":37,"line":2811},[35,4695,2925],{"class":86},[35,4697,2935],{"class":45},[35,4699,4700,4702],{"class":37,"line":732},[35,4701,2925],{"class":86},[35,4703,3472],{"class":45},[35,4705,4706,4708,4710],{"class":37,"line":461},[35,4707,3426],{"class":93},[35,4709,59],{"class":86},[35,4711,3482],{"class":45},[35,4713,4714],{"class":37,"line":2830},[35,4715,2736],{"emptyLinePlaceholder":201},[35,4717,4718],{"class":37,"line":2835},[35,4719,4720],{"class":2658},"      # 按用户名或角色审批（审批人满足 users 或 roles 其一即可），其中一人审批通过才行\n",[35,4722,4723,4725,4727],{"class":37,"line":1396},[35,4724,2853],{"class":86},[35,4726,3387],{"class":93},[35,4728,2667],{"class":86},[35,4730,4731,4733],{"class":37,"line":1528},[35,4732,2940],{"class":93},[35,4734,2667],{"class":86},[35,4736,4737,4739],{"class":37,"line":1674},[35,4738,2925],{"class":86},[35,4740,3517],{"class":45},[35,4742,4743,4745],{"class":37,"line":472},[35,4744,2925],{"class":86},[35,4746,3525],{"class":45},[35,4748,4749,4751],{"class":37,"line":1014},[35,4750,2918],{"class":93},[35,4752,2667],{"class":86},[35,4754,4755,4757],{"class":37,"line":1937},[35,4756,2925],{"class":86},[35,4758,3472],{"class":45},[35,4760,4761,4763],{"class":37,"line":183},[35,4762,2925],{"class":86},[35,4764,2928],{"class":45},[35,4766,4767,4769,4771],{"class":37,"line":729},[35,4768,3426],{"class":93},[35,4770,59],{"class":86},[35,4772,3556],{"class":45},[21,4774,4775],{"id":4775},"自定义部署流水线",[17,4777,4778,4779,4781,4782,4784],{},"如下示例定义了三种环境的部署事件流水线，\n当在页面中选择部署 ",[32,4780,2638],{}," 环境时，则触发 ",[32,4783,3709],{}," 事件。\n流水线基于当前 tag 对应的代码进行部署操作。",[25,4786,4788],{"className":2649,"code":4787,"language":2651,"meta":30,"style":30},"# .cnb.yml\n$:\n  tag_deploy.development:\n    - name: dev\n      stages:\n        - name: 部署环境名\n          script: echo $name\n        - name: tag 名\n          script: echo $tag_name\n  tag_deploy.staging:\n    - name: staging\n      stages:\n        - name: 部署环境名\n          script: echo $name\n        - name: tag 名\n          script: echo $tag_name\n  tag_deploy.production:\n    - name: production\n      stages:\n        - name: 部署环境名\n          script: echo $name\n        - name: tag 名\n          script: echo $tag_name\n",[32,4789,4790,4795,4802,4809,4821,4828,4840,4850,4861,4870,4877,4887,4893,4903,4911,4921,4929,4936,4946,4952,4962,4970,4980],{"__ignoreMap":30},[35,4791,4792],{"class":37,"line":38},[35,4793,4794],{"class":2658},"# .cnb.yml\n",[35,4796,4797,4800],{"class":37,"line":90},[35,4798,4799],{"class":93},"$",[35,4801,2667],{"class":86},[35,4803,4804,4807],{"class":37,"line":112},[35,4805,4806],{"class":93},"  tag_deploy.development",[35,4808,2667],{"class":86},[35,4810,4811,4814,4816,4818],{"class":37,"line":162},[35,4812,4813],{"class":86},"    -",[35,4815,2680],{"class":93},[35,4817,59],{"class":86},[35,4819,4820],{"class":45}," dev\n",[35,4822,4823,4826],{"class":37,"line":166},[35,4824,4825],{"class":93},"      stages",[35,4827,2667],{"class":86},[35,4829,4830,4833,4835,4837],{"class":37,"line":170},[35,4831,4832],{"class":86},"        -",[35,4834,2680],{"class":93},[35,4836,59],{"class":86},[35,4838,4839],{"class":45}," 部署环境名\n",[35,4841,4842,4845,4847],{"class":37,"line":174},[35,4843,4844],{"class":93},"          script",[35,4846,59],{"class":86},[35,4848,4849],{"class":45}," echo $name\n",[35,4851,4852,4854,4856,4858],{"class":37,"line":178},[35,4853,4832],{"class":86},[35,4855,2680],{"class":93},[35,4857,59],{"class":86},[35,4859,4860],{"class":45}," tag 名\n",[35,4862,4863,4865,4867],{"class":37,"line":181},[35,4864,4844],{"class":93},[35,4866,59],{"class":86},[35,4868,4869],{"class":45}," echo $tag_name\n",[35,4871,4872,4875],{"class":37,"line":185},[35,4873,4874],{"class":93},"  tag_deploy.staging",[35,4876,2667],{"class":86},[35,4878,4879,4881,4883,4885],{"class":37,"line":1000},[35,4880,4813],{"class":86},[35,4882,2680],{"class":93},[35,4884,59],{"class":86},[35,4886,2747],{"class":45},[35,4888,4889,4891],{"class":37,"line":1025},[35,4890,4825],{"class":93},[35,4892,2667],{"class":86},[35,4894,4895,4897,4899,4901],{"class":37,"line":1256},[35,4896,4832],{"class":86},[35,4898,2680],{"class":93},[35,4900,59],{"class":86},[35,4902,4839],{"class":45},[35,4904,4905,4907,4909],{"class":37,"line":164},[35,4906,4844],{"class":93},[35,4908,59],{"class":86},[35,4910,4849],{"class":45},[35,4912,4913,4915,4917,4919],{"class":37,"line":2765},[35,4914,4832],{"class":86},[35,4916,2680],{"class":93},[35,4918,59],{"class":86},[35,4920,4860],{"class":45},[35,4922,4923,4925,4927],{"class":37,"line":157},[35,4924,4844],{"class":93},[35,4926,59],{"class":86},[35,4928,4869],{"class":45},[35,4930,4931,4934],{"class":37,"line":2778},[35,4932,4933],{"class":93},"  tag_deploy.production",[35,4935,2667],{"class":86},[35,4937,4938,4940,4942,4944],{"class":37,"line":864},[35,4939,4813],{"class":86},[35,4941,2680],{"class":93},[35,4943,59],{"class":86},[35,4945,2799],{"class":45},[35,4947,4948,4950],{"class":37,"line":881},[35,4949,4825],{"class":93},[35,4951,2667],{"class":86},[35,4953,4954,4956,4958,4960],{"class":37,"line":1009},[35,4955,4832],{"class":86},[35,4957,2680],{"class":93},[35,4959,59],{"class":86},[35,4961,4839],{"class":45},[35,4963,4964,4966,4968],{"class":37,"line":2811},[35,4965,4844],{"class":93},[35,4967,59],{"class":86},[35,4969,4849],{"class":45},[35,4971,4972,4974,4976,4978],{"class":37,"line":732},[35,4973,4832],{"class":86},[35,4975,2680],{"class":93},[35,4977,59],{"class":86},[35,4979,4860],{"class":45},[35,4981,4982,4984,4986],{"class":37,"line":461},[35,4983,4844],{"class":93},[35,4985,59],{"class":86},[35,4987,4869],{"class":45},[17,4989,4990],{},"示例中的流水线事件名和部署环境类型对应关系如下：",[123,4992,4993,5000,5007],{},[126,4994,4995,4997,4998],{},[32,4996,3709],{},"：",[32,4999,2638],{},[126,5001,5002,4997,5005],{},[32,5003,5004],{},"tag_deploy.staging",[32,5006,2642],{},[126,5008,5009,4997,5012],{},[32,5010,5011],{},"tag_deploy.production",[32,5013,2645],{},[4167,5015,5017],{"id":5016},"自定义按钮触发的-web_trigger-事件","自定义按钮触发的 web_trigger 事件",[17,5019,5020,5022,5023,5027,5028,5031,5032,5034],{},[32,5021,2359],{}," 中的自定义按钮，仅支持触发 ",[129,5024,5026],{"href":5025},"..\u002Fbasic-usage\u002Fgrammar#web-trigger-%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6","web_trigger事件"," 事件。\n如下流水线配置中，",[32,5029,5030],{},"web_trigger_annotation"," 事件执行时，会进行上传",[129,5033,1992],{"href":1993},"操作。",[25,5036,5038],{"className":2649,"code":5037,"language":2651,"meta":30,"style":30},"# .cnb.yml\n$:\n  # 自定义按钮可触发的事件\n  web_trigger_annotation:\n    - stages:\n        - name: 上传元数据\n          image: cnbcool\u002Fannotations:latest\n          settings:\n            data: |\n              key1=value1\n              key2=value2\n",[32,5039,5040,5044,5050,5055,5062,5071,5082,5092,5099,5109,5114],{"__ignoreMap":30},[35,5041,5042],{"class":37,"line":38},[35,5043,4794],{"class":2658},[35,5045,5046,5048],{"class":37,"line":90},[35,5047,4799],{"class":93},[35,5049,2667],{"class":86},[35,5051,5052],{"class":37,"line":112},[35,5053,5054],{"class":2658},"  # 自定义按钮可触发的事件\n",[35,5056,5057,5060],{"class":37,"line":162},[35,5058,5059],{"class":93},"  web_trigger_annotation",[35,5061,2667],{"class":86},[35,5063,5064,5066,5069],{"class":37,"line":166},[35,5065,4813],{"class":86},[35,5067,5068],{"class":93}," stages",[35,5070,2667],{"class":86},[35,5072,5073,5075,5077,5079],{"class":37,"line":170},[35,5074,4832],{"class":86},[35,5076,2680],{"class":93},[35,5078,59],{"class":86},[35,5080,5081],{"class":45}," 上传元数据\n",[35,5083,5084,5087,5089],{"class":37,"line":174},[35,5085,5086],{"class":93},"          image",[35,5088,59],{"class":86},[35,5090,5091],{"class":45}," cnbcool\u002Fannotations:latest\n",[35,5093,5094,5097],{"class":37,"line":178},[35,5095,5096],{"class":93},"          settings",[35,5098,2667],{"class":86},[35,5100,5101,5104,5106],{"class":37,"line":181},[35,5102,5103],{"class":93},"            data",[35,5105,59],{"class":86},[35,5107,5108],{"class":71}," |\n",[35,5110,5111],{"class":37,"line":185},[35,5112,5113],{"class":45},"              key1=value1\n",[35,5115,5116],{"class":37,"line":1000},[35,5117,5118],{"class":45},"              key2=value2\n",[21,5120,5121],{"id":5121},"部署权限说明",[17,5123,5124,5125,5128,5129,5132],{},"需有 ",[32,5126,5127],{},"仓库写权限"," 且有 ",[32,5130,5131],{},"推送 Tag"," 权限的用户才能进行部署操作。",[142,5134,5135],{},"html pre.shiki code .sWuyu, html code.shiki .sWuyu{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}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 .s8R28, html code.shiki .s8R28{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}",{"title":30,"searchDepth":90,"depth":90,"links":5137},[5138,5139,5144,5147],{"id":2628,"depth":90,"text":2628},{"id":4148,"depth":90,"text":4148,"children":5140},[5141,5142,5143],{"id":4169,"depth":112,"text":4169},{"id":4343,"depth":112,"text":4343},{"id":4564,"depth":112,"text":4564},{"id":4775,"depth":90,"text":4775,"children":5145},[5146],{"id":5016,"depth":112,"text":5017},{"id":5121,"depth":90,"text":5121},"云原生构建支持自定义部署流程，用户可通过在仓库根目录下添加 `.cnb\u002Ftag_deploy.yml` 文件来配置部署环境、审批流程和部署前置条件。部署环境包括 `development`、`staging` 和 `production`，每个环境可定义按钮、审批流程、部署前置条件等，流水线基于当前 tag 对应的代码进行部署操作，且部署需有仓库写权限和推送 Tag 权限的用户才能进行 。",{},{"title":2131,"description":5148},"wsWTMQa9qzwEieoYkd78IhjX_8dt_EgWCsvbviz2vKU",[5153,5155],{"title":2127,"path":2128,"stem":2129,"description":5154,"children":-1},"云原生构建支持在`代码-分支详情页`配置自定义按钮，通过点击按钮触发`web_trigger`事件流水线，并支持输入环境变量。需在仓库根目录下创建`.cnb\u002Fweb_trigger.yml`文件进行按钮配置，包括按钮显示规则、事件名、环境变量及权限控制等；同时，在`.cnb.yml`中定义`web_trigger`事件流水线。只有具备仓库写权限的用户可触发执行。",{"title":2135,"path":2136,"stem":2137,"description":5156,"children":-1},"该文本主要介绍了常见问题及解决办法，包括流水线未触发的排查流程、本地与 CI 环境差异导致的问题及解决方法、登录到流水线容器调试的参考、流水线执行脚本和登陆调试结果不同的处理，以及超时无输出和未改代码但流水线失败的原因及应对等。",1775435405946]