[{"data":1,"prerenderedAt":5780},["ShallowReactive",2],{"plugins":3,"$fHjgHa7JiU-d4Y7-UUOZrPzQNVV1ZtTpFamuCTA6rKQ0":1968,"-docs-build-basic-usage-env":2608,"-docs-build-basic-usage-env-surround":5775},[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":2063,"body":2610,"description":5771,"extension":188,"links":7,"meta":5772,"navigation":201,"path":2064,"seo":5773,"stem":2065,"titleTemplate":7,"__hash__":5774},"docs\u002Fdocs\u002F03.build\u002F01.basic-usage\u002F08.env.md",{"type":10,"value":2611,"toc":5754},[2612,2614,2624,2627,2654,2769,2772,2795,2895,2901,2951,2954,2957,2965,2968,2971,2990,2993,3014,3035,3038,3049,3052,3061,3086,3100,3205,3219,3227,3297,3299,3309,3323,3343,3350,3516,3640,3645,3726,3735,3741,3759,3780,3783,3789,3941,3946,3949,3952,4127,4130,4134,4137,4223,4226,4229,4248,4251,4255,4258,4278,4388,4391,4413,4418,4421,4441,4553,4556,4578,4589,4619,4623,4626,4721,4725,4728,4731,4761,4786,4865,4870,4996,5001,5256,5260,5350,5354,5357,5444,5449,5469,5569,5574,5650,5653,5663,5735,5738,5745,5751],[13,2613,2063],{"id":2063},[17,2615,2616,2617,2619,2620,2623],{},"在构建过程中可以使用环境变量，",[32,2618,2026],{}," 内置了一些",[129,2621,2067],{"href":2622},".\u002Fbuild-in-env","。",[21,2625,2626],{"id":2626},"声明环境变量",[2628,2629,2630,2637,2647],"ol",{},[126,2631,2632,2633,2636],{},"通过 ",[32,2634,2635],{},"env"," 声明环境变量",[126,2638,2639,2640,2643,2644,2646],{},"在 ",[32,2641,2642],{},"Pipeline"," 里声明的环境变量对当前 ",[32,2645,2642],{}," 有效",[126,2648,2639,2649,2643,2652,2646],{},[32,2650,2651],{},"Job",[32,2653,2651],{},[25,2655,2659],{"className":2656,"code":2657,"language":2658,"meta":30,"style":30},"language-yaml shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","main:\n  push:\n    - env:\n        RELEASE_MSG: release message\n      stages:\n        - name: release\n          type: git:release\n          env:\n            RELEASE_NAME: release-1\n          options:\n            description: ${RELEASE_MSG}\n            name: ${RELEASE_NAME}\n","yaml",[32,2660,2661,2668,2675,2685,2695,2702,2715,2725,2732,2742,2749,2759],{"__ignoreMap":30},[35,2662,2663,2665],{"class":37,"line":38},[35,2664,210],{"class":93},[35,2666,2667],{"class":86},":\n",[35,2669,2670,2673],{"class":37,"line":90},[35,2671,2672],{"class":93},"  push",[35,2674,2667],{"class":86},[35,2676,2677,2680,2683],{"class":37,"line":112},[35,2678,2679],{"class":86},"    -",[35,2681,2682],{"class":93}," env",[35,2684,2667],{"class":86},[35,2686,2687,2690,2692],{"class":37,"line":162},[35,2688,2689],{"class":93},"        RELEASE_MSG",[35,2691,59],{"class":86},[35,2693,2694],{"class":45}," release message\n",[35,2696,2697,2700],{"class":37,"line":166},[35,2698,2699],{"class":93},"      stages",[35,2701,2667],{"class":86},[35,2703,2704,2707,2710,2712],{"class":37,"line":170},[35,2705,2706],{"class":86},"        -",[35,2708,2709],{"class":93}," name",[35,2711,59],{"class":86},[35,2713,2714],{"class":45}," release\n",[35,2716,2717,2720,2722],{"class":37,"line":174},[35,2718,2719],{"class":93},"          type",[35,2721,59],{"class":86},[35,2723,2724],{"class":45}," git:release\n",[35,2726,2727,2730],{"class":37,"line":178},[35,2728,2729],{"class":93},"          env",[35,2731,2667],{"class":86},[35,2733,2734,2737,2739],{"class":37,"line":181},[35,2735,2736],{"class":93},"            RELEASE_NAME",[35,2738,59],{"class":86},[35,2740,2741],{"class":45}," release-1\n",[35,2743,2744,2747],{"class":37,"line":185},[35,2745,2746],{"class":93},"          options",[35,2748,2667],{"class":86},[35,2750,2751,2754,2756],{"class":37,"line":1000},[35,2752,2753],{"class":93},"            description",[35,2755,59],{"class":86},[35,2757,2758],{"class":45}," ${RELEASE_MSG}\n",[35,2760,2761,2764,2766],{"class":37,"line":1025},[35,2762,2763],{"class":93},"            name",[35,2765,59],{"class":86},[35,2767,2768],{"class":45}," ${RELEASE_NAME}\n",[21,2770,2771],{"id":2771},"导入环境变量",[2628,2773,2774,2780],{},[126,2775,2632,2776,2779],{},[32,2777,2778],{},"imports"," 导入一个密钥仓库文件，可将敏感信息注入到环境变量，供后续任务使用。",[126,2781,2782,2783,2785,2786,2788,2789,2792,2793],{},"当 ",[32,2784,2635],{}," 和 ",[32,2787,2778],{}," 的 ",[32,2790,2791],{},"key"," 冲突时，优先使用 ",[32,2794,2635],{},[25,2796,2798],{"className":2656,"code":2797,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - services:\n        - docker\n      # 导入密钥仓库文件为环境变量\n      imports: https:\u002F\u002Fcnb.cool\u002F\u003Cyour-repo-slug>\u002F-\u002Fblob\u002Fmain\u002Fxxx\u002Fenvs.yml\n      stages:\n        - name: docker info\n          script: docker info\n        - name: docker login\n          # 其中 TEST_DOCKER_DOMAIN、TEST_DOCKER_USER、TEST_DOCKER_PWD 为密钥仓库文件中的变量\n          script: docker login $TEST_DOCKER_DOMAIN -u $TEST_DOCKER_USER -p $TEST_DOCKER_PWD\n",[32,2799,2800,2806,2812,2821,2828,2834,2844,2850,2861,2870,2881,2886],{"__ignoreMap":30},[35,2801,2802,2804],{"class":37,"line":38},[35,2803,210],{"class":93},[35,2805,2667],{"class":86},[35,2807,2808,2810],{"class":37,"line":90},[35,2809,2672],{"class":93},[35,2811,2667],{"class":86},[35,2813,2814,2816,2819],{"class":37,"line":112},[35,2815,2679],{"class":86},[35,2817,2818],{"class":93}," services",[35,2820,2667],{"class":86},[35,2822,2823,2825],{"class":37,"line":162},[35,2824,2706],{"class":86},[35,2826,2827],{"class":45}," docker\n",[35,2829,2830],{"class":37,"line":166},[35,2831,2833],{"class":2832},"sWuyu","      # 导入密钥仓库文件为环境变量\n",[35,2835,2836,2839,2841],{"class":37,"line":170},[35,2837,2838],{"class":93},"      imports",[35,2840,59],{"class":86},[35,2842,2843],{"class":45}," https:\u002F\u002Fcnb.cool\u002F\u003Cyour-repo-slug>\u002F-\u002Fblob\u002Fmain\u002Fxxx\u002Fenvs.yml\n",[35,2845,2846,2848],{"class":37,"line":174},[35,2847,2699],{"class":93},[35,2849,2667],{"class":86},[35,2851,2852,2854,2856,2858],{"class":37,"line":178},[35,2853,2706],{"class":86},[35,2855,2709],{"class":93},[35,2857,59],{"class":86},[35,2859,2860],{"class":45}," docker info\n",[35,2862,2863,2866,2868],{"class":37,"line":181},[35,2864,2865],{"class":93},"          script",[35,2867,59],{"class":86},[35,2869,2860],{"class":45},[35,2871,2872,2874,2876,2878],{"class":37,"line":185},[35,2873,2706],{"class":86},[35,2875,2709],{"class":93},[35,2877,59],{"class":86},[35,2879,2880],{"class":45}," docker login\n",[35,2882,2883],{"class":37,"line":1000},[35,2884,2885],{"class":2832},"          # 其中 TEST_DOCKER_DOMAIN、TEST_DOCKER_USER、TEST_DOCKER_PWD 为密钥仓库文件中的变量\n",[35,2887,2888,2890,2892],{"class":37,"line":1025},[35,2889,2865],{"class":93},[35,2891,59],{"class":86},[35,2893,2894],{"class":45}," docker login $TEST_DOCKER_DOMAIN -u $TEST_DOCKER_USER -p $TEST_DOCKER_PWD\n",[17,2896,2897,2900],{},[32,2898,2899],{},"https:\u002F\u002Fcnb.cool\u002F\u003Cyour-repo-slug>\u002F-\u002Fblob\u002Fmain\u002Fxxx\u002Fenvs.yml"," 内容示例",[25,2902,2904],{"className":2656,"code":2903,"language":2658,"meta":30,"style":30},"# docker 镜像源域名\nTEST_DOCKER_DOMAIN: registry.example.com\n# docker 用户名\nTEST_DOCKER_USER: your_docker_username\n# docker 密码\nTEST_DOCKER_PWD: your_docker_password\n",[32,2905,2906,2911,2921,2926,2936,2941],{"__ignoreMap":30},[35,2907,2908],{"class":37,"line":38},[35,2909,2910],{"class":2832},"# docker 镜像源域名\n",[35,2912,2913,2916,2918],{"class":37,"line":90},[35,2914,2915],{"class":93},"TEST_DOCKER_DOMAIN",[35,2917,59],{"class":86},[35,2919,2920],{"class":45}," registry.example.com\n",[35,2922,2923],{"class":37,"line":112},[35,2924,2925],{"class":2832},"# docker 用户名\n",[35,2927,2928,2931,2933],{"class":37,"line":162},[35,2929,2930],{"class":93},"TEST_DOCKER_USER",[35,2932,59],{"class":86},[35,2934,2935],{"class":45}," your_docker_username\n",[35,2937,2938],{"class":37,"line":166},[35,2939,2940],{"class":2832},"# docker 密码\n",[35,2942,2943,2946,2948],{"class":37,"line":170},[35,2944,2945],{"class":93},"TEST_DOCKER_PWD",[35,2947,59],{"class":86},[35,2949,2950],{"class":45}," your_docker_password\n",[21,2952,2953],{"id":2953},"变量名限制",[17,2955,2956],{},"在 Shell 中，环境变量名的命名规则有一些限制。根据 POSIX 标准，环境变量名应符合以下规则：",[2628,2958,2959,2962],{},[126,2960,2961],{},"只能包含字母（大小写均可）、数字和下划线（_）字符。",[126,2963,2964],{},"第一个字符不能是数字。",[17,2966,2967],{},"不符合上述规则的变量会被忽略",[21,2969,2970],{"id":2970},"导出环境变量",[17,2972,2973,2975,2976,2979,2980,2984,2985,2987,2988,2623],{},[32,2974,2651],{}," 执行结束后，有一个 ",[32,2977,2978],{},"result"," 对象，可通过 ",[129,2981,2983],{"href":2982},".\u002Fgrammar#exports","exports"," 将 ",[32,2986,2978],{}," 中的属性导出到环境变量，生命周期为当前 ",[32,2989,2642],{},[17,2991,2992],{},"语法格式为：",[25,2994,2996],{"className":2656,"code":2995,"language":2658,"meta":30,"style":30},"exports:\n  from-key: to-key\n",[32,2997,2998,3004],{"__ignoreMap":30},[35,2999,3000,3002],{"class":37,"line":38},[35,3001,2983],{"class":93},[35,3003,2667],{"class":86},[35,3005,3006,3009,3011],{"class":37,"line":90},[35,3007,3008],{"class":93},"  from-key",[35,3010,59],{"class":86},[35,3012,3013],{"class":45}," to-key\n",[123,3015,3016,3029],{},[126,3017,3018,3021,3022,3025,3026,2623],{},[32,3019,3020],{},"from-key"," 要导出的 ",[32,3023,3024],{},"Job result"," 对象中的属性名，支持环境变量，支持深层取值，参考 ",[32,3027,3028],{},"lodash.get",[126,3030,3031,3034],{},[32,3032,3033],{},"to-key"," 映射到环境变量中的变量名。",[17,3036,3037],{},"有如下三种方式设置 result：",[123,3039,3040,3043,3046],{},[126,3041,3042],{},"脚本任务执行结果",[126,3044,3045],{},"解析输出中的自定义变量",[126,3047,3048],{},"内置任务的 result",[3050,3051,3042],"h3",{"id":3042},[17,3053,3054,3057,3058,3060],{},[32,3055,3056],{},"script"," 自定义脚本任务执行完，",[32,3059,3024],{},"的属性有：",[123,3062,3063,3068,3074,3080],{},[126,3064,3065,3067],{},[32,3066,32],{},": 返回码",[126,3069,3070,3073],{},[32,3071,3072],{},"stdout",": 标准输出",[126,3075,3076,3079],{},[32,3077,3078],{},"stderr",": 标准错误",[126,3081,3082,3085],{},[32,3083,3084],{},"info",": 标准输出、标准错误，按时序的混合体",[17,3087,3088],{},[3089,3090,3091,3092,3095,3096,3099],"strong",{},"注意：可使用 ",[32,3093,3094],{},"printf \"%s\" \"hello\\nworld\""," 来输出变量，以消除标准输出流最后的换行符，同时保留 ",[32,3097,3098],{},"\\n"," 等转义字符。",[25,3101,3103],{"className":2656,"code":3102,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: set env\n          script: echo -n $(date \"+%Y-%m-%d %H:%M\")\n          exports:\n            code: CUSTOM_ENV_DATE_CODE\n            info: CUSTOM_ENV_DATE_INFO\n        - name: echo env\n          script:\n            - echo $CUSTOM_ENV_DATE_CODE\n            - echo $CUSTOM_ENV_DATE_INFO\n",[32,3104,3105,3111,3117,3126,3137,3146,3153,3163,3173,3184,3190,3198],{"__ignoreMap":30},[35,3106,3107,3109],{"class":37,"line":38},[35,3108,210],{"class":93},[35,3110,2667],{"class":86},[35,3112,3113,3115],{"class":37,"line":90},[35,3114,2672],{"class":93},[35,3116,2667],{"class":86},[35,3118,3119,3121,3124],{"class":37,"line":112},[35,3120,2679],{"class":86},[35,3122,3123],{"class":93}," stages",[35,3125,2667],{"class":86},[35,3127,3128,3130,3132,3134],{"class":37,"line":162},[35,3129,2706],{"class":86},[35,3131,2709],{"class":93},[35,3133,59],{"class":86},[35,3135,3136],{"class":45}," set env\n",[35,3138,3139,3141,3143],{"class":37,"line":166},[35,3140,2865],{"class":93},[35,3142,59],{"class":86},[35,3144,3145],{"class":45}," echo -n $(date \"+%Y-%m-%d %H:%M\")\n",[35,3147,3148,3151],{"class":37,"line":170},[35,3149,3150],{"class":93},"          exports",[35,3152,2667],{"class":86},[35,3154,3155,3158,3160],{"class":37,"line":174},[35,3156,3157],{"class":93},"            code",[35,3159,59],{"class":86},[35,3161,3162],{"class":45}," CUSTOM_ENV_DATE_CODE\n",[35,3164,3165,3168,3170],{"class":37,"line":178},[35,3166,3167],{"class":93},"            info",[35,3169,59],{"class":86},[35,3171,3172],{"class":45}," CUSTOM_ENV_DATE_INFO\n",[35,3174,3175,3177,3179,3181],{"class":37,"line":181},[35,3176,2706],{"class":86},[35,3178,2709],{"class":93},[35,3180,59],{"class":86},[35,3182,3183],{"class":45}," echo env\n",[35,3185,3186,3188],{"class":37,"line":185},[35,3187,2865],{"class":93},[35,3189,2667],{"class":86},[35,3191,3192,3195],{"class":37,"line":1000},[35,3193,3194],{"class":86},"            -",[35,3196,3197],{"class":45}," echo $CUSTOM_ENV_DATE_CODE\n",[35,3199,3200,3202],{"class":37,"line":1025},[35,3201,3194],{"class":86},[35,3203,3204],{"class":45}," echo $CUSTOM_ENV_DATE_INFO\n",[17,3206,3207,3208,3211,3212,3211,3215,3218],{},"包含 ",[32,3209,3210],{},"if","、",[32,3213,3214],{},"ifModify",[32,3216,3217],{},"ifNewBranch"," 等判断逻辑时，可设置的属性有：",[123,3220,3221],{},[126,3222,3223,3226],{},[32,3224,3225],{},"skip",": 如果执行上述判断逻辑后跳过任务执行则返回跳过原因，否则为空字符串。",[25,3228,3230],{"className":2656,"code":3229,"language":2658,"meta":30,"style":30},"- name: use if\n  if: exit -1\n  exports:\n    skip: REASON\n- name: tell last\n  # $REASON 的值为 if 这个字符串\n  script: echo $REASON\n",[32,3231,3232,3244,3254,3261,3271,3282,3287],{"__ignoreMap":30},[35,3233,3234,3237,3239,3241],{"class":37,"line":38},[35,3235,3236],{"class":86},"-",[35,3238,2709],{"class":93},[35,3240,59],{"class":86},[35,3242,3243],{"class":45}," use if\n",[35,3245,3246,3249,3251],{"class":37,"line":90},[35,3247,3248],{"class":93},"  if",[35,3250,59],{"class":86},[35,3252,3253],{"class":45}," exit -1\n",[35,3255,3256,3259],{"class":37,"line":112},[35,3257,3258],{"class":93},"  exports",[35,3260,2667],{"class":86},[35,3262,3263,3266,3268],{"class":37,"line":162},[35,3264,3265],{"class":93},"    skip",[35,3267,59],{"class":86},[35,3269,3270],{"class":45}," REASON\n",[35,3272,3273,3275,3277,3279],{"class":37,"line":166},[35,3274,3236],{"class":86},[35,3276,2709],{"class":93},[35,3278,59],{"class":86},[35,3280,3281],{"class":45}," tell last\n",[35,3283,3284],{"class":37,"line":170},[35,3285,3286],{"class":2832},"  # $REASON 的值为 if 这个字符串\n",[35,3288,3289,3292,3294],{"class":37,"line":174},[35,3290,3291],{"class":93},"  script",[35,3293,59],{"class":86},[35,3295,3296],{"class":45}," echo $REASON\n",[3050,3298,3045],{"id":3045},[17,3300,3301,3302,3305,3306,3308],{},"CI 会从标准输出流里按行识别 ",[32,3303,3304],{},"##[set-output key=value]"," 格式的内容，自动放入 ",[32,3307,2978],{}," 对象中。",[17,3310,3311,3312,3314,3315,3318,3319,3322],{},"若变量值包含换行符 ",[32,3313,3098],{},"，可对变量值进行 ",[32,3316,3317],{},"base64"," 或 ",[32,3320,3321],{},"escape"," 编码。",[17,3324,3325,3326,3329,3330,3332,3333,3335,3336,3338,3339,3342],{},"变量值若以 ",[32,3327,3328],{},"base64,"," 开始，",[32,3331,2026],{}," 会对 ",[32,3334,3328],{}," 后面的内容做 ",[32,3337,3317],{}," 解码，否则会对变量值做 ",[32,3340,3341],{},"unescape"," 解码。",[17,3344,3345,3346,3349],{},"使用 ",[32,3347,3348],{},"Node.js"," 示例代码如下：",[25,3351,3355],{"className":3352,"code":3353,"language":3354,"meta":30,"style":30},"language-javascript shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u002F\u002F test.js\nconst value = '测试字符串\\ntest string';\n\u002F\u002F 输出 base64 编码的变量值\nconsole.log(\n  `##[set-output redline_msg_base64=base64,${Buffer.from(value, 'utf-8').toString('base64')}]`\n);\n\n\u002F\u002F 输出 escape 编码的变量值\nconsole.log(`##[set-output redline_msg_escape=${escape(value)}]`);\n","javascript",[32,3356,3357,3362,3390,3395,3409,3467,3473,3478,3483],{"__ignoreMap":30},[35,3358,3359],{"class":37,"line":38},[35,3360,3361],{"class":2832},"\u002F\u002F test.js\n",[35,3363,3364,3368,3371,3374,3377,3380,3382,3385,3387],{"class":37,"line":90},[35,3365,3367],{"class":3366},"smZ93","const",[35,3369,3370],{"class":82}," value ",[35,3372,3373],{"class":86},"=",[35,3375,3376],{"class":86}," '",[35,3378,3379],{"class":45},"测试字符串",[35,3381,3098],{"class":82},[35,3383,3384],{"class":45},"test string",[35,3386,102],{"class":86},[35,3388,3389],{"class":86},";\n",[35,3391,3392],{"class":37,"line":112},[35,3393,3394],{"class":2832},"\u002F\u002F 输出 base64 编码的变量值\n",[35,3396,3397,3400,3403,3406],{"class":37,"line":162},[35,3398,3399],{"class":82},"console",[35,3401,3402],{"class":86},".",[35,3404,3405],{"class":78},"log",[35,3407,3408],{"class":82},"(\n",[35,3410,3411,3414,3417,3420,3423,3425,3428,3431,3434,3436,3439,3441,3444,3446,3449,3451,3453,3455,3457,3459,3461,3464],{"class":37,"line":166},[35,3412,3413],{"class":86},"  `",[35,3415,3416],{"class":45},"##[set-output redline_msg_base64=base64,",[35,3418,3419],{"class":86},"${",[35,3421,3422],{"class":82},"Buffer",[35,3424,3402],{"class":86},[35,3426,3427],{"class":78},"from",[35,3429,3430],{"class":82},"(value",[35,3432,3433],{"class":86},",",[35,3435,3376],{"class":86},[35,3437,3438],{"class":45},"utf-8",[35,3440,102],{"class":86},[35,3442,3443],{"class":82},")",[35,3445,3402],{"class":86},[35,3447,3448],{"class":78},"toString",[35,3450,83],{"class":82},[35,3452,102],{"class":86},[35,3454,3317],{"class":45},[35,3456,102],{"class":86},[35,3458,3443],{"class":82},[35,3460,115],{"class":86},[35,3462,3463],{"class":45},"]",[35,3465,3466],{"class":86},"`\n",[35,3468,3469,3471],{"class":37,"line":170},[35,3470,3443],{"class":82},[35,3472,3389],{"class":86},[35,3474,3475],{"class":37,"line":174},[35,3476,3477],{"emptyLinePlaceholder":201},"\n",[35,3479,3480],{"class":37,"line":178},[35,3481,3482],{"class":2832},"\u002F\u002F 输出 escape 编码的变量值\n",[35,3484,3485,3487,3489,3491,3493,3496,3499,3501,3503,3506,3508,3510,3512,3514],{"class":37,"line":181},[35,3486,3399],{"class":82},[35,3488,3402],{"class":86},[35,3490,3405],{"class":78},[35,3492,83],{"class":82},[35,3494,3495],{"class":86},"`",[35,3497,3498],{"class":45},"##[set-output redline_msg_escape=",[35,3500,3419],{"class":86},[35,3502,3321],{"class":78},[35,3504,3505],{"class":82},"(value)",[35,3507,115],{"class":86},[35,3509,3463],{"class":45},[35,3511,3495],{"class":86},[35,3513,3443],{"class":82},[35,3515,3389],{"class":86},[25,3517,3519],{"className":2656,"code":3518,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - docker:\n        image: node:20-alpine\n      stages:\n        - name: set output env\n          script: node test.js\n          # 将 test.js 输出的变量导出为环境变量\n          exports:\n            redline_msg_base64: BASE64_KEY\n            redline_msg_escape: ESCAPE_KEY\n        - name: echo env\n          script:\n            - echo \"BASE64_KEY $BASE64_KEY\"\n            - echo \"ESCAPE_KEY $ESCAPE_KEY\"\n",[32,3520,3521,3527,3533,3542,3552,3558,3569,3578,3583,3589,3599,3609,3619,3625,3632],{"__ignoreMap":30},[35,3522,3523,3525],{"class":37,"line":38},[35,3524,210],{"class":93},[35,3526,2667],{"class":86},[35,3528,3529,3531],{"class":37,"line":90},[35,3530,2672],{"class":93},[35,3532,2667],{"class":86},[35,3534,3535,3537,3540],{"class":37,"line":112},[35,3536,2679],{"class":86},[35,3538,3539],{"class":93}," docker",[35,3541,2667],{"class":86},[35,3543,3544,3547,3549],{"class":37,"line":162},[35,3545,3546],{"class":93},"        image",[35,3548,59],{"class":86},[35,3550,3551],{"class":45}," node:20-alpine\n",[35,3553,3554,3556],{"class":37,"line":166},[35,3555,2699],{"class":93},[35,3557,2667],{"class":86},[35,3559,3560,3562,3564,3566],{"class":37,"line":170},[35,3561,2706],{"class":86},[35,3563,2709],{"class":93},[35,3565,59],{"class":86},[35,3567,3568],{"class":45}," set output env\n",[35,3570,3571,3573,3575],{"class":37,"line":174},[35,3572,2865],{"class":93},[35,3574,59],{"class":86},[35,3576,3577],{"class":45}," node test.js\n",[35,3579,3580],{"class":37,"line":178},[35,3581,3582],{"class":2832},"          # 将 test.js 输出的变量导出为环境变量\n",[35,3584,3585,3587],{"class":37,"line":181},[35,3586,3150],{"class":93},[35,3588,2667],{"class":86},[35,3590,3591,3594,3596],{"class":37,"line":185},[35,3592,3593],{"class":93},"            redline_msg_base64",[35,3595,59],{"class":86},[35,3597,3598],{"class":45}," BASE64_KEY\n",[35,3600,3601,3604,3606],{"class":37,"line":1000},[35,3602,3603],{"class":93},"            redline_msg_escape",[35,3605,59],{"class":86},[35,3607,3608],{"class":45}," ESCAPE_KEY\n",[35,3610,3611,3613,3615,3617],{"class":37,"line":1025},[35,3612,2706],{"class":86},[35,3614,2709],{"class":93},[35,3616,59],{"class":86},[35,3618,3183],{"class":45},[35,3620,3621,3623],{"class":37,"line":1256},[35,3622,2865],{"class":93},[35,3624,2667],{"class":86},[35,3626,3627,3629],{"class":37,"line":164},[35,3628,3194],{"class":86},[35,3630,3631],{"class":45}," echo \"BASE64_KEY $BASE64_KEY\"\n",[35,3633,3635,3637],{"class":37,"line":3634},15,[35,3636,3194],{"class":86},[35,3638,3639],{"class":45}," echo \"ESCAPE_KEY $ESCAPE_KEY\"\n",[17,3641,3345,3642,3349],{},[32,3643,3644],{},"echo",[25,3646,3648],{"className":2656,"code":3647,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: set output env\n          script: echo \"##[set-output redline_msg_base64=base64,$(echo -e \"测试字符串\\ntest string\" | base64 -w 0)]\"\n          exports:\n            redline_msg_base64: BASE64_KEY\n        - name: echo env\n          script:\n            - echo -e \"BASE64_KEY $BASE64_KEY\"\n",[32,3649,3650,3656,3662,3670,3680,3689,3695,3703,3713,3719],{"__ignoreMap":30},[35,3651,3652,3654],{"class":37,"line":38},[35,3653,210],{"class":93},[35,3655,2667],{"class":86},[35,3657,3658,3660],{"class":37,"line":90},[35,3659,2672],{"class":93},[35,3661,2667],{"class":86},[35,3663,3664,3666,3668],{"class":37,"line":112},[35,3665,2679],{"class":86},[35,3667,3123],{"class":93},[35,3669,2667],{"class":86},[35,3671,3672,3674,3676,3678],{"class":37,"line":162},[35,3673,2706],{"class":86},[35,3675,2709],{"class":93},[35,3677,59],{"class":86},[35,3679,3568],{"class":45},[35,3681,3682,3684,3686],{"class":37,"line":166},[35,3683,2865],{"class":93},[35,3685,59],{"class":86},[35,3687,3688],{"class":45}," echo \"##[set-output redline_msg_base64=base64,$(echo -e \"测试字符串\\ntest string\" | base64 -w 0)]\"\n",[35,3690,3691,3693],{"class":37,"line":170},[35,3692,3150],{"class":93},[35,3694,2667],{"class":86},[35,3696,3697,3699,3701],{"class":37,"line":174},[35,3698,3593],{"class":93},[35,3700,59],{"class":86},[35,3702,3598],{"class":45},[35,3704,3705,3707,3709,3711],{"class":37,"line":178},[35,3706,2706],{"class":86},[35,3708,2709],{"class":93},[35,3710,59],{"class":86},[35,3712,3183],{"class":45},[35,3714,3715,3717],{"class":37,"line":181},[35,3716,2865],{"class":93},[35,3718,2667],{"class":86},[35,3720,3721,3723],{"class":37,"line":185},[35,3722,3194],{"class":86},[35,3724,3725],{"class":45}," echo -e \"BASE64_KEY $BASE64_KEY\"\n",[17,3727,3728],{},[3089,3729,3730,3731,3734],{},"注意：在 Unix-like 系统中，base64 命令默认会在每76个字符后添加一个换行符，可使用 ",[32,3732,3733],{},"-w 0"," 选项来禁用换行避免 CI 未能按行解析出变量。",[17,3736,3737,3738,3740],{},"不包含 ",[32,3739,3098],{}," 的变量值可直接输出",[25,3742,3744],{"className":27,"code":3743,"language":29,"meta":30,"style":30},"echo \"##[set-output redline_msg=some value]\"\n",[32,3745,3746],{"__ignoreMap":30},[35,3747,3748,3750,3753,3756],{"class":37,"line":38},[35,3749,3644],{"class":78},[35,3751,3752],{"class":86}," \"",[35,3754,3755],{"class":45},"##[set-output redline_msg=some value]",[35,3757,3758],{"class":86},"\"\n",[3760,3761,3762,3765,3772],"tip",{},[17,3763,3764],{},"受限于系统环境变量值长度限制，过大的变量值无效。",[17,3766,3767,3768,3771],{},"CI 会忽略大于等于 ",[32,3769,3770],{},"100KB"," 的变量值。可写入文件中自行解析。",[17,3773,3774,3775,3779],{},"对于敏感信息，建议使用 ",[129,3776,3778],{"href":3777},"\u002Fdocs\u002Fbuild\u002Fplugins#read-file","read-file"," 内置任务。",[3050,3781,3782],{"id":3782},"内置任务中导出环境变量",[17,3784,3785,3786,3788],{},"一些内置任务会有输出结果，可通过 ",[32,3787,2983],{}," 导出为环境变量。",[25,3790,3792],{"className":2656,"code":3791,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: xxxx\n          type: xxx:xxx\n          options:\n            product: public\n            name: cnb\n            dist: release\u002F\n          exports:\n            version: CUSTOM_ENV_VERSION\n            url: CUSTOM_ENV_URL\n            #支持对象深层取值\n            nextRelease.gitTag: CUSTOM_ENV_GIT_TAG\n        - name: echo env\n          script:\n            - echo $CUSTOM_ENV_VERSION\n            - echo $CUSTOM_ENV_URL\n",[32,3793,3794,3800,3806,3814,3825,3834,3840,3850,3859,3869,3875,3885,3895,3900,3910,3920,3926,3934],{"__ignoreMap":30},[35,3795,3796,3798],{"class":37,"line":38},[35,3797,210],{"class":93},[35,3799,2667],{"class":86},[35,3801,3802,3804],{"class":37,"line":90},[35,3803,2672],{"class":93},[35,3805,2667],{"class":86},[35,3807,3808,3810,3812],{"class":37,"line":112},[35,3809,2679],{"class":86},[35,3811,3123],{"class":93},[35,3813,2667],{"class":86},[35,3815,3816,3818,3820,3822],{"class":37,"line":162},[35,3817,2706],{"class":86},[35,3819,2709],{"class":93},[35,3821,59],{"class":86},[35,3823,3824],{"class":45}," xxxx\n",[35,3826,3827,3829,3831],{"class":37,"line":166},[35,3828,2719],{"class":93},[35,3830,59],{"class":86},[35,3832,3833],{"class":45}," xxx:xxx\n",[35,3835,3836,3838],{"class":37,"line":170},[35,3837,2746],{"class":93},[35,3839,2667],{"class":86},[35,3841,3842,3845,3847],{"class":37,"line":174},[35,3843,3844],{"class":93},"            product",[35,3846,59],{"class":86},[35,3848,3849],{"class":45}," public\n",[35,3851,3852,3854,3856],{"class":37,"line":178},[35,3853,2763],{"class":93},[35,3855,59],{"class":86},[35,3857,3858],{"class":45}," cnb\n",[35,3860,3861,3864,3866],{"class":37,"line":181},[35,3862,3863],{"class":93},"            dist",[35,3865,59],{"class":86},[35,3867,3868],{"class":45}," release\u002F\n",[35,3870,3871,3873],{"class":37,"line":185},[35,3872,3150],{"class":93},[35,3874,2667],{"class":86},[35,3876,3877,3880,3882],{"class":37,"line":1000},[35,3878,3879],{"class":93},"            version",[35,3881,59],{"class":86},[35,3883,3884],{"class":45}," CUSTOM_ENV_VERSION\n",[35,3886,3887,3890,3892],{"class":37,"line":1025},[35,3888,3889],{"class":93},"            url",[35,3891,59],{"class":86},[35,3893,3894],{"class":45}," CUSTOM_ENV_URL\n",[35,3896,3897],{"class":37,"line":1256},[35,3898,3899],{"class":2832},"            #支持对象深层取值\n",[35,3901,3902,3905,3907],{"class":37,"line":164},[35,3903,3904],{"class":93},"            nextRelease.gitTag",[35,3906,59],{"class":86},[35,3908,3909],{"class":45}," CUSTOM_ENV_GIT_TAG\n",[35,3911,3912,3914,3916,3918],{"class":37,"line":3634},[35,3913,2706],{"class":86},[35,3915,2709],{"class":93},[35,3917,59],{"class":86},[35,3919,3183],{"class":45},[35,3921,3922,3924],{"class":37,"line":157},[35,3923,2865],{"class":93},[35,3925,2667],{"class":86},[35,3927,3929,3931],{"class":37,"line":3928},17,[35,3930,3194],{"class":86},[35,3932,3933],{"class":45}," echo $CUSTOM_ENV_VERSION\n",[35,3935,3936,3938],{"class":37,"line":864},[35,3937,3194],{"class":86},[35,3939,3940],{"class":45}," echo $CUSTOM_ENV_URL\n",[17,3942,3943,3945],{},[32,3944,2978],{}," 内容参考各内置任务文档。",[3050,3947,3948],{"id":3948},"增删改查环境变量",[17,3950,3951],{},"可以覆盖已有的环境变量，设为空字符串或 null 即为删除。",[25,3953,3955],{"className":2656,"code":3954,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - env:\n        CUSTOM_ENV_DATE_INFO: default\n        CUSTOM_ENV_FOR_DELETE: default\n      stages:\n        - name: set env\n          script: echo -n $(date \"+%Y-%m-%d %H:%M\")\n          exports:\n            # 新增\n            code: CUSTOM_ENV_DATE_CODE\n            # 修改\n            info: CUSTOM_ENV_DATE_INFO\n            # 删除\n            CUSTOM_ENV_FOR_DELETE: null\n            # 删除\n            # CUSTOM_ENV_FOR_DELETE:\n        - name: echo env\n          script:\n            - echo $CUSTOM_ENV_DATE_CODE\n            - echo $CUSTOM_ENV_DATE_INFO\n            - echo $CUSTOM_ENV_DATE_STDOUT\n            - echo $CUSTOM_ENV_FOR_DELETE\n            - echo $CUSTOM_ENV_GIT_TAG\n",[32,3956,3957,3963,3969,3977,3987,3996,4002,4012,4020,4026,4031,4039,4044,4052,4057,4067,4071,4076,4086,4092,4098,4105,4112,4119],{"__ignoreMap":30},[35,3958,3959,3961],{"class":37,"line":38},[35,3960,210],{"class":93},[35,3962,2667],{"class":86},[35,3964,3965,3967],{"class":37,"line":90},[35,3966,2672],{"class":93},[35,3968,2667],{"class":86},[35,3970,3971,3973,3975],{"class":37,"line":112},[35,3972,2679],{"class":86},[35,3974,2682],{"class":93},[35,3976,2667],{"class":86},[35,3978,3979,3982,3984],{"class":37,"line":162},[35,3980,3981],{"class":93},"        CUSTOM_ENV_DATE_INFO",[35,3983,59],{"class":86},[35,3985,3986],{"class":45}," default\n",[35,3988,3989,3992,3994],{"class":37,"line":166},[35,3990,3991],{"class":93},"        CUSTOM_ENV_FOR_DELETE",[35,3993,59],{"class":86},[35,3995,3986],{"class":45},[35,3997,3998,4000],{"class":37,"line":170},[35,3999,2699],{"class":93},[35,4001,2667],{"class":86},[35,4003,4004,4006,4008,4010],{"class":37,"line":174},[35,4005,2706],{"class":86},[35,4007,2709],{"class":93},[35,4009,59],{"class":86},[35,4011,3136],{"class":45},[35,4013,4014,4016,4018],{"class":37,"line":178},[35,4015,2865],{"class":93},[35,4017,59],{"class":86},[35,4019,3145],{"class":45},[35,4021,4022,4024],{"class":37,"line":181},[35,4023,3150],{"class":93},[35,4025,2667],{"class":86},[35,4027,4028],{"class":37,"line":185},[35,4029,4030],{"class":2832},"            # 新增\n",[35,4032,4033,4035,4037],{"class":37,"line":1000},[35,4034,3157],{"class":93},[35,4036,59],{"class":86},[35,4038,3162],{"class":45},[35,4040,4041],{"class":37,"line":1025},[35,4042,4043],{"class":2832},"            # 修改\n",[35,4045,4046,4048,4050],{"class":37,"line":1256},[35,4047,3167],{"class":93},[35,4049,59],{"class":86},[35,4051,3172],{"class":45},[35,4053,4054],{"class":37,"line":164},[35,4055,4056],{"class":2832},"            # 删除\n",[35,4058,4059,4062,4064],{"class":37,"line":3634},[35,4060,4061],{"class":93},"            CUSTOM_ENV_FOR_DELETE",[35,4063,59],{"class":86},[35,4065,4066],{"class":86}," null\n",[35,4068,4069],{"class":37,"line":157},[35,4070,4056],{"class":2832},[35,4072,4073],{"class":37,"line":3928},[35,4074,4075],{"class":2832},"            # CUSTOM_ENV_FOR_DELETE:\n",[35,4077,4078,4080,4082,4084],{"class":37,"line":864},[35,4079,2706],{"class":86},[35,4081,2709],{"class":93},[35,4083,59],{"class":86},[35,4085,3183],{"class":45},[35,4087,4088,4090],{"class":37,"line":881},[35,4089,2865],{"class":93},[35,4091,2667],{"class":86},[35,4093,4094,4096],{"class":37,"line":1009},[35,4095,3194],{"class":86},[35,4097,3197],{"class":45},[35,4099,4101,4103],{"class":37,"line":4100},21,[35,4102,3194],{"class":86},[35,4104,3204],{"class":45},[35,4106,4107,4109],{"class":37,"line":732},[35,4108,3194],{"class":86},[35,4110,4111],{"class":45}," echo $CUSTOM_ENV_DATE_STDOUT\n",[35,4113,4114,4116],{"class":37,"line":461},[35,4115,3194],{"class":86},[35,4117,4118],{"class":45}," echo $CUSTOM_ENV_FOR_DELETE\n",[35,4120,4122,4124],{"class":37,"line":4121},24,[35,4123,3194],{"class":86},[35,4125,4126],{"class":45}," echo $CUSTOM_ENV_GIT_TAG\n",[21,4128,4129],{"id":4129},"使用环境变量",[3050,4131,4133],{"id":4132},"在-脚本任务-中使用","在 脚本任务 中使用",[17,4135,4136],{},"执行脚本任务时，流水线设置的环境变量作为任务执行时的环境变量",[25,4138,4140],{"className":2656,"code":4139,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: test internal env\n          # CNB_BRANCH 为内置环境变量\n          script: echo $CNB_BRANCH\n        - name: test self defined env\n          env:\n            cat_name: tomcat\n          script: echo $cat_name\n",[32,4141,4142,4148,4154,4162,4173,4178,4187,4198,4204,4214],{"__ignoreMap":30},[35,4143,4144,4146],{"class":37,"line":38},[35,4145,210],{"class":93},[35,4147,2667],{"class":86},[35,4149,4150,4152],{"class":37,"line":90},[35,4151,2672],{"class":93},[35,4153,2667],{"class":86},[35,4155,4156,4158,4160],{"class":37,"line":112},[35,4157,2679],{"class":86},[35,4159,3123],{"class":93},[35,4161,2667],{"class":86},[35,4163,4164,4166,4168,4170],{"class":37,"line":162},[35,4165,2706],{"class":86},[35,4167,2709],{"class":93},[35,4169,59],{"class":86},[35,4171,4172],{"class":45}," test internal env\n",[35,4174,4175],{"class":37,"line":166},[35,4176,4177],{"class":2832},"          # CNB_BRANCH 为内置环境变量\n",[35,4179,4180,4182,4184],{"class":37,"line":170},[35,4181,2865],{"class":93},[35,4183,59],{"class":86},[35,4185,4186],{"class":45}," echo $CNB_BRANCH\n",[35,4188,4189,4191,4193,4195],{"class":37,"line":174},[35,4190,2706],{"class":86},[35,4192,2709],{"class":93},[35,4194,59],{"class":86},[35,4196,4197],{"class":45}," test self defined env\n",[35,4199,4200,4202],{"class":37,"line":178},[35,4201,2729],{"class":93},[35,4203,2667],{"class":86},[35,4205,4206,4209,4211],{"class":37,"line":181},[35,4207,4208],{"class":93},"            cat_name",[35,4210,59],{"class":86},[35,4212,4213],{"class":45}," tomcat\n",[35,4215,4216,4218,4220],{"class":37,"line":185},[35,4217,2865],{"class":93},[35,4219,59],{"class":86},[35,4221,4222],{"class":45}," echo $cat_name\n",[3050,4224,4225],{"id":4225},"变量替换",[17,4227,4228],{},"配置文件中的一些属性值会进行变量替换。",[17,4230,4231,4232,4235,4236,4239,4240,4243,4244,4247],{},"如有环境变量 ",[32,4233,4234],{},"env_name=env_value","，那么属性值中 ",[32,4237,4238],{},"$env_name"," 会被替换成 ",[32,4241,4242],{},"env_value","，若 ",[32,4245,4246],{},"env_name"," 无值，则会替换成空字符串。",[17,4249,4250],{},"下面列出了会进行变量替换的属性：",[123,4252,4253],{},[126,4254,2085],{},[17,4256,4257],{},"内置任务 options 内的属性值和 optionsFrom 会进行变量替换。",[25,4259,4261],{"className":2656,"code":4260,"language":2658,"meta":30,"style":30},"# options.yml\nname: Nightly\n",[32,4262,4263,4268],{"__ignoreMap":30},[35,4264,4265],{"class":37,"line":38},[35,4266,4267],{"class":2832},"# options.yml\n",[35,4269,4270,4273,4275],{"class":37,"line":90},[35,4271,4272],{"class":93},"name",[35,4274,59],{"class":86},[35,4276,4277],{"class":45}," Nightly\n",[25,4279,4281],{"className":2656,"code":4280,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - env:\n        address: options.yml\n        description: publish for xx task\n      stages:\n        - name: git release\n          type: git:release\n          # $address 会被替换成 env 中的 \"options.yml\"\n          optionsFrom: $address\n          # options.yml 中的 name 会合并到 options 中\n          options:\n            # $description 会被替换成 env 中的 \"publish for xx task\"\n            description: $description\n",[32,4282,4283,4289,4295,4303,4313,4323,4329,4340,4348,4353,4363,4368,4374,4379],{"__ignoreMap":30},[35,4284,4285,4287],{"class":37,"line":38},[35,4286,210],{"class":93},[35,4288,2667],{"class":86},[35,4290,4291,4293],{"class":37,"line":90},[35,4292,2672],{"class":93},[35,4294,2667],{"class":86},[35,4296,4297,4299,4301],{"class":37,"line":112},[35,4298,2679],{"class":86},[35,4300,2682],{"class":93},[35,4302,2667],{"class":86},[35,4304,4305,4308,4310],{"class":37,"line":162},[35,4306,4307],{"class":93},"        address",[35,4309,59],{"class":86},[35,4311,4312],{"class":45}," options.yml\n",[35,4314,4315,4318,4320],{"class":37,"line":166},[35,4316,4317],{"class":93},"        description",[35,4319,59],{"class":86},[35,4321,4322],{"class":45}," publish for xx task\n",[35,4324,4325,4327],{"class":37,"line":170},[35,4326,2699],{"class":93},[35,4328,2667],{"class":86},[35,4330,4331,4333,4335,4337],{"class":37,"line":174},[35,4332,2706],{"class":86},[35,4334,2709],{"class":93},[35,4336,59],{"class":86},[35,4338,4339],{"class":45}," git release\n",[35,4341,4342,4344,4346],{"class":37,"line":178},[35,4343,2719],{"class":93},[35,4345,59],{"class":86},[35,4347,2724],{"class":45},[35,4349,4350],{"class":37,"line":181},[35,4351,4352],{"class":2832},"          # $address 会被替换成 env 中的 \"options.yml\"\n",[35,4354,4355,4358,4360],{"class":37,"line":185},[35,4356,4357],{"class":93},"          optionsFrom",[35,4359,59],{"class":86},[35,4361,4362],{"class":45}," $address\n",[35,4364,4365],{"class":37,"line":1000},[35,4366,4367],{"class":2832},"          # options.yml 中的 name 会合并到 options 中\n",[35,4369,4370,4372],{"class":37,"line":1025},[35,4371,2746],{"class":93},[35,4373,2667],{"class":86},[35,4375,4376],{"class":37,"line":1256},[35,4377,4378],{"class":2832},"            # $description 会被替换成 env 中的 \"publish for xx task\"\n",[35,4380,4381,4383,4385],{"class":37,"line":164},[35,4382,2753],{"class":93},[35,4384,59],{"class":86},[35,4386,4387],{"class":45}," $description\n",[17,4389,4390],{},"options 的最终内容为：",[25,4392,4394],{"className":2656,"code":4393,"language":2658,"meta":30,"style":30},"name: Nightly\ndescription: publish for xx task\n",[32,4395,4396,4404],{"__ignoreMap":30},[35,4397,4398,4400,4402],{"class":37,"line":38},[35,4399,4272],{"class":93},[35,4401,59],{"class":86},[35,4403,4277],{"class":45},[35,4405,4406,4409,4411],{"class":37,"line":90},[35,4407,4408],{"class":93},"description",[35,4410,59],{"class":86},[35,4412,4322],{"class":45},[123,4414,4415],{},[126,4416,4417],{},"插件任务",[17,4419,4420],{},"插件任务 settings 内的属性值和 settingsFrom 会进行变量替换。",[25,4422,4424],{"className":2656,"code":4423,"language":2658,"meta":30,"style":30},"# settings.yml\nrobot: https:\u002F\u002Fqyapi.weixin.qq.com\u002Fcgi-bin\u002Fwebhook\u002Fsend?key=xxx\n",[32,4425,4426,4431],{"__ignoreMap":30},[35,4427,4428],{"class":37,"line":38},[35,4429,4430],{"class":2832},"# settings.yml\n",[35,4432,4433,4436,4438],{"class":37,"line":90},[35,4434,4435],{"class":93},"robot",[35,4437,59],{"class":86},[35,4439,4440],{"class":45}," https:\u002F\u002Fqyapi.weixin.qq.com\u002Fcgi-bin\u002Fwebhook\u002Fsend?key=xxx\n",[25,4442,4444],{"className":2656,"code":4443,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - env:\n        address: settings.yml\n        message: pr check\n      stages:\n        - name: notify\n          image: tencentcom\u002Fwecom-message\n          # $address 会被替换成 env 中的 \"settings.yml\"\n          settingsFrom: $address\n          # settings.yml 中的 robot 会合并到 settings 中\n          settings:\n            # $message 会被替换成 env 中的 \"pr check\"\n            content: $message\n",[32,4445,4446,4452,4458,4466,4475,4485,4491,4502,4512,4517,4526,4531,4538,4543],{"__ignoreMap":30},[35,4447,4448,4450],{"class":37,"line":38},[35,4449,210],{"class":93},[35,4451,2667],{"class":86},[35,4453,4454,4456],{"class":37,"line":90},[35,4455,2672],{"class":93},[35,4457,2667],{"class":86},[35,4459,4460,4462,4464],{"class":37,"line":112},[35,4461,2679],{"class":86},[35,4463,2682],{"class":93},[35,4465,2667],{"class":86},[35,4467,4468,4470,4472],{"class":37,"line":162},[35,4469,4307],{"class":93},[35,4471,59],{"class":86},[35,4473,4474],{"class":45}," settings.yml\n",[35,4476,4477,4480,4482],{"class":37,"line":166},[35,4478,4479],{"class":93},"        message",[35,4481,59],{"class":86},[35,4483,4484],{"class":45}," pr check\n",[35,4486,4487,4489],{"class":37,"line":170},[35,4488,2699],{"class":93},[35,4490,2667],{"class":86},[35,4492,4493,4495,4497,4499],{"class":37,"line":174},[35,4494,2706],{"class":86},[35,4496,2709],{"class":93},[35,4498,59],{"class":86},[35,4500,4501],{"class":45}," notify\n",[35,4503,4504,4507,4509],{"class":37,"line":178},[35,4505,4506],{"class":93},"          image",[35,4508,59],{"class":86},[35,4510,4511],{"class":45}," tencentcom\u002Fwecom-message\n",[35,4513,4514],{"class":37,"line":181},[35,4515,4516],{"class":2832},"          # $address 会被替换成 env 中的 \"settings.yml\"\n",[35,4518,4519,4522,4524],{"class":37,"line":185},[35,4520,4521],{"class":93},"          settingsFrom",[35,4523,59],{"class":86},[35,4525,4362],{"class":45},[35,4527,4528],{"class":37,"line":1000},[35,4529,4530],{"class":2832},"          # settings.yml 中的 robot 会合并到 settings 中\n",[35,4532,4533,4536],{"class":37,"line":1025},[35,4534,4535],{"class":93},"          settings",[35,4537,2667],{"class":86},[35,4539,4540],{"class":37,"line":1256},[35,4541,4542],{"class":2832},"            # $message 会被替换成 env 中的 \"pr check\"\n",[35,4544,4545,4548,4550],{"class":37,"line":164},[35,4546,4547],{"class":93},"            content",[35,4549,59],{"class":86},[35,4551,4552],{"class":45}," $message\n",[17,4554,4555],{},"settings 的最终内容为：",[25,4557,4559],{"className":2656,"code":4558,"language":2658,"meta":30,"style":30},"robot: https:\u002F\u002Fqyapi.weixin.qq.com\u002Fcgi-bin\u002Fwebhook\u002Fsend?key=xxx\nmessage: pr check\n",[32,4560,4561,4569],{"__ignoreMap":30},[35,4562,4563,4565,4567],{"class":37,"line":38},[35,4564,4435],{"class":93},[35,4566,59],{"class":86},[35,4568,4440],{"class":45},[35,4570,4571,4574,4576],{"class":37,"line":90},[35,4572,4573],{"class":93},"message",[35,4575,59],{"class":86},[35,4577,4484],{"class":45},[17,4579,4580,4581,4584,4585,4588],{},"另外写在 Dockerfile 中的 ",[32,4582,4583],{},"LABEL"," 指定的 ",[32,4586,4587],{},"settingsFrom"," 同样可以进行变量替换",[25,4590,4594],{"className":4591,"code":4592,"language":4593,"meta":30,"style":30},"language-dockerfile shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","FROM node:20\n\nLABEL cnb.cool\u002Fsettings-from=\"$address\"\n","dockerfile",[32,4595,4596,4605,4609],{"__ignoreMap":30},[35,4597,4598,4602],{"class":37,"line":38},[35,4599,4601],{"class":4600},"sYRBq","FROM",[35,4603,4604],{"class":82}," node:20\n",[35,4606,4607],{"class":37,"line":90},[35,4608,3477],{"emptyLinePlaceholder":201},[35,4610,4611,4613,4616],{"class":37,"line":112},[35,4612,4583],{"class":4600},[35,4614,4615],{"class":82}," cnb.cool\u002Fsettings-from=",[35,4617,4618],{"class":45},"\"$address\"\n",[123,4620,4621],{},[126,4622,2635],{},[17,4624,4625],{},"env 下声明的属性值可以引用上层 env 中的变量进行替换",[25,4627,4629],{"className":2656,"code":4628,"language":2658,"meta":30,"style":30},"# .cnb.yml\nmain:\n  push:\n    - env:\n        cat_name: tomcat\n      stages:\n        - name: echo env\n          env:\n            # 使用上层 env 声明的 cat_name 值进行替换\n            name: 'cat $cat_name'\n            # 输出 cat tomcat\n            script: echo $name\n",[32,4630,4631,4636,4642,4648,4656,4665,4671,4681,4687,4692,4706,4711],{"__ignoreMap":30},[35,4632,4633],{"class":37,"line":38},[35,4634,4635],{"class":2832},"# .cnb.yml\n",[35,4637,4638,4640],{"class":37,"line":90},[35,4639,210],{"class":93},[35,4641,2667],{"class":86},[35,4643,4644,4646],{"class":37,"line":112},[35,4645,2672],{"class":93},[35,4647,2667],{"class":86},[35,4649,4650,4652,4654],{"class":37,"line":162},[35,4651,2679],{"class":86},[35,4653,2682],{"class":93},[35,4655,2667],{"class":86},[35,4657,4658,4661,4663],{"class":37,"line":166},[35,4659,4660],{"class":93},"        cat_name",[35,4662,59],{"class":86},[35,4664,4213],{"class":45},[35,4666,4667,4669],{"class":37,"line":170},[35,4668,2699],{"class":93},[35,4670,2667],{"class":86},[35,4672,4673,4675,4677,4679],{"class":37,"line":174},[35,4674,2706],{"class":86},[35,4676,2709],{"class":93},[35,4678,59],{"class":86},[35,4680,3183],{"class":45},[35,4682,4683,4685],{"class":37,"line":178},[35,4684,2729],{"class":93},[35,4686,2667],{"class":86},[35,4688,4689],{"class":37,"line":181},[35,4690,4691],{"class":2832},"            # 使用上层 env 声明的 cat_name 值进行替换\n",[35,4693,4694,4696,4698,4700,4703],{"class":37,"line":185},[35,4695,2763],{"class":93},[35,4697,59],{"class":86},[35,4699,3376],{"class":86},[35,4701,4702],{"class":45},"cat $cat_name",[35,4704,4705],{"class":86},"'\n",[35,4707,4708],{"class":37,"line":1000},[35,4709,4710],{"class":2832},"            # 输出 cat tomcat\n",[35,4712,4713,4716,4718],{"class":37,"line":1025},[35,4714,4715],{"class":93},"            script",[35,4717,59],{"class":86},[35,4719,4720],{"class":45}," echo $name\n",[123,4722,4723],{},[126,4724,2778],{},[17,4726,4727],{},"imports 的属性值以及所声明的文件中的属性值均会进行变量替换。",[17,4729,4730],{},"若 imports 为数组，数组前面文件中声明的变量对数组后面元素有效。",[25,4732,4734],{"className":2656,"code":4733,"language":2658,"meta":30,"style":30},"# env1.yml\naddress: env2.yml\nplatform: amd64\n",[32,4735,4736,4741,4751],{"__ignoreMap":30},[35,4737,4738],{"class":37,"line":38},[35,4739,4740],{"class":2832},"# env1.yml\n",[35,4742,4743,4746,4748],{"class":37,"line":90},[35,4744,4745],{"class":93},"address",[35,4747,59],{"class":86},[35,4749,4750],{"class":45}," env2.yml\n",[35,4752,4753,4756,4758],{"class":37,"line":112},[35,4754,4755],{"class":93},"platform",[35,4757,59],{"class":86},[35,4759,4760],{"class":45}," amd64\n",[25,4762,4764],{"className":2656,"code":4763,"language":2658,"meta":30,"style":30},"# env2.yml\n# 读取 env1.yml 中的 platform 属性值进行替换\naction: build for $platform\n",[32,4765,4766,4771,4776],{"__ignoreMap":30},[35,4767,4768],{"class":37,"line":38},[35,4769,4770],{"class":2832},"# env2.yml\n",[35,4772,4773],{"class":37,"line":90},[35,4774,4775],{"class":2832},"# 读取 env1.yml 中的 platform 属性值进行替换\n",[35,4777,4778,4781,4783],{"class":37,"line":112},[35,4779,4780],{"class":93},"action",[35,4782,59],{"class":86},[35,4784,4785],{"class":45}," build for $platform\n",[25,4787,4789],{"className":2656,"code":4788,"language":2658,"meta":30,"style":30},"# .cnb.yml\nmain:\n  push:\n    - imports:\n        - env1.yml\n        # env1.yml 中声明了 address，$address 会被替换成 env2.yml\n        - $address\n      stages:\n        - name: echo action\n          # 读取 env2.yml 中的 action 属性值进行替换\n          script: echo $action\n",[32,4790,4791,4795,4801,4807,4816,4823,4828,4834,4840,4851,4856],{"__ignoreMap":30},[35,4792,4793],{"class":37,"line":38},[35,4794,4635],{"class":2832},[35,4796,4797,4799],{"class":37,"line":90},[35,4798,210],{"class":93},[35,4800,2667],{"class":86},[35,4802,4803,4805],{"class":37,"line":112},[35,4804,2672],{"class":93},[35,4806,2667],{"class":86},[35,4808,4809,4811,4814],{"class":37,"line":162},[35,4810,2679],{"class":86},[35,4812,4813],{"class":93}," imports",[35,4815,2667],{"class":86},[35,4817,4818,4820],{"class":37,"line":166},[35,4819,2706],{"class":86},[35,4821,4822],{"class":45}," env1.yml\n",[35,4824,4825],{"class":37,"line":170},[35,4826,4827],{"class":2832},"        # env1.yml 中声明了 address，$address 会被替换成 env2.yml\n",[35,4829,4830,4832],{"class":37,"line":174},[35,4831,2706],{"class":86},[35,4833,4362],{"class":45},[35,4835,4836,4838],{"class":37,"line":178},[35,4837,2699],{"class":93},[35,4839,2667],{"class":86},[35,4841,4842,4844,4846,4848],{"class":37,"line":181},[35,4843,2706],{"class":86},[35,4845,2709],{"class":93},[35,4847,59],{"class":86},[35,4849,4850],{"class":45}," echo action\n",[35,4852,4853],{"class":37,"line":185},[35,4854,4855],{"class":2832},"          # 读取 env2.yml 中的 action 属性值进行替换\n",[35,4857,4858,4860,4862],{"class":37,"line":1000},[35,4859,2865],{"class":93},[35,4861,59],{"class":86},[35,4863,4864],{"class":45}," echo $action\n",[123,4866,4867],{},[126,4868,4869],{},"pipeline.runner.tags",[25,4871,4873],{"className":2656,"code":4872,"language":2658,"meta":30,"style":30},"# 构建不同架构下的镜像\n.build: &build\n  runner:\n    tags: cnb:arch:$CNB_PIPELINE_NAME\n  services:\n    - docker\n  stages:\n    - name: docker build\n      script: echo \"docker build for $CNB_PIPELINE_NAME\"\nmain:\n  push:\n    # 下面 \"amd64\" 和 \"arm64:v8\" 会被声明为内置环境变量 CNB_PIPELINE_NAME 的值\n    amd64: *build\n    'arm64:v8': *build\n",[32,4874,4875,4880,4893,4900,4910,4917,4923,4930,4941,4951,4957,4963,4968,4980],{"__ignoreMap":30},[35,4876,4877],{"class":37,"line":38},[35,4878,4879],{"class":2832},"# 构建不同架构下的镜像\n",[35,4881,4882,4885,4887,4890],{"class":37,"line":90},[35,4883,4884],{"class":93},".build",[35,4886,59],{"class":86},[35,4888,4889],{"class":71}," &",[35,4891,4892],{"class":41},"build\n",[35,4894,4895,4898],{"class":37,"line":112},[35,4896,4897],{"class":93},"  runner",[35,4899,2667],{"class":86},[35,4901,4902,4905,4907],{"class":37,"line":162},[35,4903,4904],{"class":93},"    tags",[35,4906,59],{"class":86},[35,4908,4909],{"class":45}," cnb:arch:$CNB_PIPELINE_NAME\n",[35,4911,4912,4915],{"class":37,"line":166},[35,4913,4914],{"class":93},"  services",[35,4916,2667],{"class":86},[35,4918,4919,4921],{"class":37,"line":170},[35,4920,2679],{"class":86},[35,4922,2827],{"class":45},[35,4924,4925,4928],{"class":37,"line":174},[35,4926,4927],{"class":93},"  stages",[35,4929,2667],{"class":86},[35,4931,4932,4934,4936,4938],{"class":37,"line":178},[35,4933,2679],{"class":86},[35,4935,2709],{"class":93},[35,4937,59],{"class":86},[35,4939,4940],{"class":45}," docker build\n",[35,4942,4943,4946,4948],{"class":37,"line":181},[35,4944,4945],{"class":93},"      script",[35,4947,59],{"class":86},[35,4949,4950],{"class":45}," echo \"docker build for $CNB_PIPELINE_NAME\"\n",[35,4952,4953,4955],{"class":37,"line":185},[35,4954,210],{"class":93},[35,4956,2667],{"class":86},[35,4958,4959,4961],{"class":37,"line":1000},[35,4960,2672],{"class":93},[35,4962,2667],{"class":86},[35,4964,4965],{"class":37,"line":1025},[35,4966,4967],{"class":2832},"    # 下面 \"amd64\" 和 \"arm64:v8\" 会被声明为内置环境变量 CNB_PIPELINE_NAME 的值\n",[35,4969,4970,4973,4975,4978],{"class":37,"line":1256},[35,4971,4972],{"class":93},"    amd64",[35,4974,59],{"class":86},[35,4976,4977],{"class":71}," *",[35,4979,4892],{"class":82},[35,4981,4982,4985,4988,4990,4992,4994],{"class":37,"line":164},[35,4983,4984],{"class":86},"    '",[35,4986,4987],{"class":45},"arm64:v8",[35,4989,102],{"class":86},[35,4991,59],{"class":86},[35,4993,4977],{"class":71},[35,4995,4892],{"class":82},[123,4997,4998],{},[126,4999,5000],{},"pipeline.docker.volumes",[25,5002,5004],{"className":2656,"code":5003,"language":2658,"meta":30,"style":30},".docker-volume: &docker-volume\n  docker:\n    image: node:22-alpine\n    volumes:\n      - $volume_path\nmain:\n  push:\n    install:\n      env:\n        volume_path: node_modules\n      \u003C\u003C: *docker-volume\n      stages:\n        - name: install\n          script: npm install axios\n        # 通知其他流水线执行\n        - name: resolve\n          type: cnb:resolve\n          options:\n            key: install\n    build:\n      env:\n        volume_path: node_modules\n      \u003C\u003C: *docker-volume\n      stages:\n        # 等待 install 流水线\n        - name: await\n          type: cnb:await\n          options:\n            key: install\n        - name: ls\n          script: ls node_modules\n",[32,5005,5006,5018,5025,5035,5042,5050,5056,5062,5069,5076,5086,5095,5101,5112,5121,5126,5137,5146,5152,5161,5168,5174,5182,5190,5196,5202,5213,5222,5228,5236,5247],{"__ignoreMap":30},[35,5007,5008,5011,5013,5015],{"class":37,"line":38},[35,5009,5010],{"class":93},".docker-volume",[35,5012,59],{"class":86},[35,5014,4889],{"class":71},[35,5016,5017],{"class":41},"docker-volume\n",[35,5019,5020,5023],{"class":37,"line":90},[35,5021,5022],{"class":93},"  docker",[35,5024,2667],{"class":86},[35,5026,5027,5030,5032],{"class":37,"line":112},[35,5028,5029],{"class":93},"    image",[35,5031,59],{"class":86},[35,5033,5034],{"class":45}," node:22-alpine\n",[35,5036,5037,5040],{"class":37,"line":162},[35,5038,5039],{"class":93},"    volumes",[35,5041,2667],{"class":86},[35,5043,5044,5047],{"class":37,"line":166},[35,5045,5046],{"class":86},"      -",[35,5048,5049],{"class":45}," $volume_path\n",[35,5051,5052,5054],{"class":37,"line":170},[35,5053,210],{"class":93},[35,5055,2667],{"class":86},[35,5057,5058,5060],{"class":37,"line":174},[35,5059,2672],{"class":93},[35,5061,2667],{"class":86},[35,5063,5064,5067],{"class":37,"line":178},[35,5065,5066],{"class":93},"    install",[35,5068,2667],{"class":86},[35,5070,5071,5074],{"class":37,"line":181},[35,5072,5073],{"class":93},"      env",[35,5075,2667],{"class":86},[35,5077,5078,5081,5083],{"class":37,"line":185},[35,5079,5080],{"class":93},"        volume_path",[35,5082,59],{"class":86},[35,5084,5085],{"class":45}," node_modules\n",[35,5087,5088,5091,5093],{"class":37,"line":1000},[35,5089,5090],{"class":86},"      \u003C\u003C:",[35,5092,4977],{"class":71},[35,5094,5017],{"class":82},[35,5096,5097,5099],{"class":37,"line":1025},[35,5098,2699],{"class":93},[35,5100,2667],{"class":86},[35,5102,5103,5105,5107,5109],{"class":37,"line":1256},[35,5104,2706],{"class":86},[35,5106,2709],{"class":93},[35,5108,59],{"class":86},[35,5110,5111],{"class":45}," install\n",[35,5113,5114,5116,5118],{"class":37,"line":164},[35,5115,2865],{"class":93},[35,5117,59],{"class":86},[35,5119,5120],{"class":45}," npm install axios\n",[35,5122,5123],{"class":37,"line":3634},[35,5124,5125],{"class":2832},"        # 通知其他流水线执行\n",[35,5127,5128,5130,5132,5134],{"class":37,"line":157},[35,5129,2706],{"class":86},[35,5131,2709],{"class":93},[35,5133,59],{"class":86},[35,5135,5136],{"class":45}," resolve\n",[35,5138,5139,5141,5143],{"class":37,"line":3928},[35,5140,2719],{"class":93},[35,5142,59],{"class":86},[35,5144,5145],{"class":45}," cnb:resolve\n",[35,5147,5148,5150],{"class":37,"line":864},[35,5149,2746],{"class":93},[35,5151,2667],{"class":86},[35,5153,5154,5157,5159],{"class":37,"line":881},[35,5155,5156],{"class":93},"            key",[35,5158,59],{"class":86},[35,5160,5111],{"class":45},[35,5162,5163,5166],{"class":37,"line":1009},[35,5164,5165],{"class":93},"    build",[35,5167,2667],{"class":86},[35,5169,5170,5172],{"class":37,"line":4100},[35,5171,5073],{"class":93},[35,5173,2667],{"class":86},[35,5175,5176,5178,5180],{"class":37,"line":732},[35,5177,5080],{"class":93},[35,5179,59],{"class":86},[35,5181,5085],{"class":45},[35,5183,5184,5186,5188],{"class":37,"line":461},[35,5185,5090],{"class":86},[35,5187,4977],{"class":71},[35,5189,5017],{"class":82},[35,5191,5192,5194],{"class":37,"line":4121},[35,5193,2699],{"class":93},[35,5195,2667],{"class":86},[35,5197,5199],{"class":37,"line":5198},25,[35,5200,5201],{"class":2832},"        # 等待 install 流水线\n",[35,5203,5204,5206,5208,5210],{"class":37,"line":1396},[35,5205,2706],{"class":86},[35,5207,2709],{"class":93},[35,5209,59],{"class":86},[35,5211,5212],{"class":45}," await\n",[35,5214,5215,5217,5219],{"class":37,"line":1528},[35,5216,2719],{"class":93},[35,5218,59],{"class":86},[35,5220,5221],{"class":45}," cnb:await\n",[35,5223,5224,5226],{"class":37,"line":1674},[35,5225,2746],{"class":93},[35,5227,2667],{"class":86},[35,5229,5230,5232,5234],{"class":37,"line":472},[35,5231,5156],{"class":93},[35,5233,59],{"class":86},[35,5235,5111],{"class":45},[35,5237,5238,5240,5242,5244],{"class":37,"line":1014},[35,5239,2706],{"class":86},[35,5241,2709],{"class":93},[35,5243,59],{"class":86},[35,5245,5246],{"class":45}," ls\n",[35,5248,5249,5251,5253],{"class":37,"line":1937},[35,5250,2865],{"class":93},[35,5252,59],{"class":86},[35,5254,5255],{"class":45}," ls node_modules\n",[123,5257,5258],{},[126,5259,3214],{},[25,5261,5263],{"className":2656,"code":5262,"language":2658,"meta":30,"style":30},"# 不同模块下代码有变更才进行对应模块的编译\n.build: &build\n  ifModify: $CNB_PIPELINE_NAME\u002F*\n  stages:\n    - name: build $CNB_PIPELINE_NAME\n      script: echo \"build $CNB_PIPELINE_NAME\"\nmain:\n  push:\n    module-a: *build\n    module-b: *build\n",[32,5264,5265,5270,5280,5290,5296,5307,5316,5322,5328,5339],{"__ignoreMap":30},[35,5266,5267],{"class":37,"line":38},[35,5268,5269],{"class":2832},"# 不同模块下代码有变更才进行对应模块的编译\n",[35,5271,5272,5274,5276,5278],{"class":37,"line":90},[35,5273,4884],{"class":93},[35,5275,59],{"class":86},[35,5277,4889],{"class":71},[35,5279,4892],{"class":41},[35,5281,5282,5285,5287],{"class":37,"line":112},[35,5283,5284],{"class":93},"  ifModify",[35,5286,59],{"class":86},[35,5288,5289],{"class":45}," $CNB_PIPELINE_NAME\u002F*\n",[35,5291,5292,5294],{"class":37,"line":162},[35,5293,4927],{"class":93},[35,5295,2667],{"class":86},[35,5297,5298,5300,5302,5304],{"class":37,"line":166},[35,5299,2679],{"class":86},[35,5301,2709],{"class":93},[35,5303,59],{"class":86},[35,5305,5306],{"class":45}," build $CNB_PIPELINE_NAME\n",[35,5308,5309,5311,5313],{"class":37,"line":170},[35,5310,4945],{"class":93},[35,5312,59],{"class":86},[35,5314,5315],{"class":45}," echo \"build $CNB_PIPELINE_NAME\"\n",[35,5317,5318,5320],{"class":37,"line":174},[35,5319,210],{"class":93},[35,5321,2667],{"class":86},[35,5323,5324,5326],{"class":37,"line":178},[35,5325,2672],{"class":93},[35,5327,2667],{"class":86},[35,5329,5330,5333,5335,5337],{"class":37,"line":181},[35,5331,5332],{"class":93},"    module-a",[35,5334,59],{"class":86},[35,5336,4977],{"class":71},[35,5338,4892],{"class":82},[35,5340,5341,5344,5346,5348],{"class":37,"line":185},[35,5342,5343],{"class":93},"    module-b",[35,5345,59],{"class":86},[35,5347,4977],{"class":71},[35,5349,4892],{"class":82},[123,5351,5352],{},[126,5353,4272],{},[17,5355,5356],{},"pipeline.name 、stage.name 和 job.name 的属性值会进行变量替换。",[25,5358,5360],{"className":2656,"code":5359,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - name: build in $CNB_REPO_SLUG\n      env:\n        platform: amd64\n      imports:\n        - env1.yml\n        - env2.yml\n      stages:\n        - name: stage_$SOME_ENV\n          script: echo \"hello world\"\n",[32,5361,5362,5368,5374,5385,5391,5400,5406,5412,5418,5424,5435],{"__ignoreMap":30},[35,5363,5364,5366],{"class":37,"line":38},[35,5365,210],{"class":93},[35,5367,2667],{"class":86},[35,5369,5370,5372],{"class":37,"line":90},[35,5371,2672],{"class":93},[35,5373,2667],{"class":86},[35,5375,5376,5378,5380,5382],{"class":37,"line":112},[35,5377,2679],{"class":86},[35,5379,2709],{"class":93},[35,5381,59],{"class":86},[35,5383,5384],{"class":45}," build in $CNB_REPO_SLUG\n",[35,5386,5387,5389],{"class":37,"line":162},[35,5388,5073],{"class":93},[35,5390,2667],{"class":86},[35,5392,5393,5396,5398],{"class":37,"line":166},[35,5394,5395],{"class":93},"        platform",[35,5397,59],{"class":86},[35,5399,4760],{"class":45},[35,5401,5402,5404],{"class":37,"line":170},[35,5403,2838],{"class":93},[35,5405,2667],{"class":86},[35,5407,5408,5410],{"class":37,"line":174},[35,5409,2706],{"class":86},[35,5411,4822],{"class":45},[35,5413,5414,5416],{"class":37,"line":178},[35,5415,2706],{"class":86},[35,5417,4750],{"class":45},[35,5419,5420,5422],{"class":37,"line":181},[35,5421,2699],{"class":93},[35,5423,2667],{"class":86},[35,5425,5426,5428,5430,5432],{"class":37,"line":185},[35,5427,2706],{"class":86},[35,5429,2709],{"class":93},[35,5431,59],{"class":86},[35,5433,5434],{"class":45}," stage_$SOME_ENV\n",[35,5436,5437,5439,5441],{"class":37,"line":1000},[35,5438,2865],{"class":93},[35,5440,59],{"class":86},[35,5442,5443],{"class":45}," echo \"hello world\"\n",[123,5445,5446],{},[126,5447,5448],{},"lock.key",[25,5450,5452],{"className":2656,"code":5451,"language":2658,"meta":30,"style":30},"# env.yml\nbuild_key: build key\n",[32,5453,5454,5459],{"__ignoreMap":30},[35,5455,5456],{"class":37,"line":38},[35,5457,5458],{"class":2832},"# env.yml\n",[35,5460,5461,5464,5466],{"class":37,"line":90},[35,5462,5463],{"class":93},"build_key",[35,5465,59],{"class":86},[35,5467,5468],{"class":45}," build key\n",[25,5470,5472],{"className":2656,"code":5471,"language":2658,"meta":30,"style":30},".build: &build\n  imports: env.yml\n  lock:\n    key: $build_key\n  stages:\n    - name: echo\n      script: echo \"hello world\"\nmain:\n  push:\n    # 以下两条流水线，一条占用了锁成功执行，另一条位占到锁执行失败\n    - *build\n    - *build\n",[32,5473,5474,5484,5494,5501,5511,5517,5528,5536,5542,5548,5553,5561],{"__ignoreMap":30},[35,5475,5476,5478,5480,5482],{"class":37,"line":38},[35,5477,4884],{"class":93},[35,5479,59],{"class":86},[35,5481,4889],{"class":71},[35,5483,4892],{"class":41},[35,5485,5486,5489,5491],{"class":37,"line":90},[35,5487,5488],{"class":93},"  imports",[35,5490,59],{"class":86},[35,5492,5493],{"class":45}," env.yml\n",[35,5495,5496,5499],{"class":37,"line":112},[35,5497,5498],{"class":93},"  lock",[35,5500,2667],{"class":86},[35,5502,5503,5506,5508],{"class":37,"line":162},[35,5504,5505],{"class":93},"    key",[35,5507,59],{"class":86},[35,5509,5510],{"class":45}," $build_key\n",[35,5512,5513,5515],{"class":37,"line":166},[35,5514,4927],{"class":93},[35,5516,2667],{"class":86},[35,5518,5519,5521,5523,5525],{"class":37,"line":170},[35,5520,2679],{"class":86},[35,5522,2709],{"class":93},[35,5524,59],{"class":86},[35,5526,5527],{"class":45}," echo\n",[35,5529,5530,5532,5534],{"class":37,"line":174},[35,5531,4945],{"class":93},[35,5533,59],{"class":86},[35,5535,5443],{"class":45},[35,5537,5538,5540],{"class":37,"line":178},[35,5539,210],{"class":93},[35,5541,2667],{"class":86},[35,5543,5544,5546],{"class":37,"line":181},[35,5545,2672],{"class":93},[35,5547,2667],{"class":86},[35,5549,5550],{"class":37,"line":185},[35,5551,5552],{"class":2832},"    # 以下两条流水线，一条占用了锁成功执行，另一条位占到锁执行失败\n",[35,5554,5555,5557,5559],{"class":37,"line":1000},[35,5556,2679],{"class":86},[35,5558,4977],{"class":71},[35,5560,4892],{"class":82},[35,5562,5563,5565,5567],{"class":37,"line":1025},[35,5564,2679],{"class":86},[35,5566,4977],{"class":71},[35,5568,4892],{"class":82},[123,5570,5571],{},[126,5572,5573],{},"allowFailure",[25,5575,5577],{"className":2656,"code":5576,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - env:\n        allow_fail: true\n      stages:\n        - name: echo\n          allowFailure: $allow_fail\n          # 脚本执行会报错，但 allowFailure 为 true，任务被认为是成功的\n          script: echo1 1\n",[32,5578,5579,5585,5591,5599,5610,5616,5626,5636,5641],{"__ignoreMap":30},[35,5580,5581,5583],{"class":37,"line":38},[35,5582,210],{"class":93},[35,5584,2667],{"class":86},[35,5586,5587,5589],{"class":37,"line":90},[35,5588,2672],{"class":93},[35,5590,2667],{"class":86},[35,5592,5593,5595,5597],{"class":37,"line":112},[35,5594,2679],{"class":86},[35,5596,2682],{"class":93},[35,5598,2667],{"class":86},[35,5600,5601,5604,5606],{"class":37,"line":162},[35,5602,5603],{"class":93},"        allow_fail",[35,5605,59],{"class":86},[35,5607,5609],{"class":5608},"sbKd-"," true\n",[35,5611,5612,5614],{"class":37,"line":166},[35,5613,2699],{"class":93},[35,5615,2667],{"class":86},[35,5617,5618,5620,5622,5624],{"class":37,"line":170},[35,5619,2706],{"class":86},[35,5621,2709],{"class":93},[35,5623,59],{"class":86},[35,5625,5527],{"class":45},[35,5627,5628,5631,5633],{"class":37,"line":174},[35,5629,5630],{"class":93},"          allowFailure",[35,5632,59],{"class":86},[35,5634,5635],{"class":45}," $allow_fail\n",[35,5637,5638],{"class":37,"line":178},[35,5639,5640],{"class":2832},"          # 脚本执行会报错，但 allowFailure 为 true，任务被认为是成功的\n",[35,5642,5643,5645,5647],{"class":37,"line":181},[35,5644,2865],{"class":93},[35,5646,59],{"class":86},[35,5648,5649],{"class":45}," echo1 1\n",[3050,5651,5652],{"id":5652},"阻止变量替换",[17,5654,5655,5656,5658,5659,5662],{},"如果不希望 ",[32,5657,4238],{}," 被替换，可以通过 ",[32,5660,5661],{},"\\$"," 阻止替换",[25,5664,5666],{"className":2656,"code":5665,"language":2658,"meta":30,"style":30},"main:\n  push:\n    - stages:\n        - name: git release\n          type: git:release\n          options:\n            name: Development\n            # 属性值是 \"some code update $description\"\n            description: some code update \\$description\n",[32,5667,5668,5674,5680,5688,5698,5706,5712,5721,5726],{"__ignoreMap":30},[35,5669,5670,5672],{"class":37,"line":38},[35,5671,210],{"class":93},[35,5673,2667],{"class":86},[35,5675,5676,5678],{"class":37,"line":90},[35,5677,2672],{"class":93},[35,5679,2667],{"class":86},[35,5681,5682,5684,5686],{"class":37,"line":112},[35,5683,2679],{"class":86},[35,5685,3123],{"class":93},[35,5687,2667],{"class":86},[35,5689,5690,5692,5694,5696],{"class":37,"line":162},[35,5691,2706],{"class":86},[35,5693,2709],{"class":93},[35,5695,59],{"class":86},[35,5697,4339],{"class":45},[35,5699,5700,5702,5704],{"class":37,"line":166},[35,5701,2719],{"class":93},[35,5703,59],{"class":86},[35,5705,2724],{"class":45},[35,5707,5708,5710],{"class":37,"line":170},[35,5709,2746],{"class":93},[35,5711,2667],{"class":86},[35,5713,5714,5716,5718],{"class":37,"line":174},[35,5715,2763],{"class":93},[35,5717,59],{"class":86},[35,5719,5720],{"class":45}," Development\n",[35,5722,5723],{"class":37,"line":178},[35,5724,5725],{"class":2832},"            # 属性值是 \"some code update $description\"\n",[35,5727,5728,5730,5732],{"class":37,"line":181},[35,5729,2753],{"class":93},[35,5731,59],{"class":86},[35,5733,5734],{"class":45}," some code update \\$description\n",[21,5736,5737],{"id":5737},"限制",[17,5739,5740,5741,5744],{},"环境变量名需由字母、数字或 ",[32,5742,5743],{},"_"," 组成，不能以数字开头。",[17,5746,5747,5748,2623],{},"变量值的长度不能超过 ",[32,5749,5750],{},"100KiB",[142,5752,5753],{},"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 .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 .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 .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}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 .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}",{"title":30,"searchDepth":90,"depth":90,"links":5755},[5756,5757,5758,5759,5765,5770],{"id":2626,"depth":90,"text":2626},{"id":2771,"depth":90,"text":2771},{"id":2953,"depth":90,"text":2953},{"id":2970,"depth":90,"text":2970,"children":5760},[5761,5762,5763,5764],{"id":3042,"depth":112,"text":3042},{"id":3045,"depth":112,"text":3045},{"id":3782,"depth":112,"text":3782},{"id":3948,"depth":112,"text":3948},{"id":4129,"depth":90,"text":4129,"children":5766},[5767,5768,5769],{"id":4132,"depth":112,"text":4133},{"id":4225,"depth":112,"text":4225},{"id":5652,"depth":112,"text":5652},{"id":5737,"depth":90,"text":5737},"在云原生构建过程中，可以通过多种方式声明、导入和管理环境变量，支持在 `Pipeline` 和 `Job` 级别的设置，以及对敏感信息进行加密处理。变量名必须符合 POSIX 标准，且变量值的长度不能超过 100KiB。在使用时，变量可以在脚本任务、配置文件和多个内置及插件任务中进行替换和引用。",{},{"title":2063,"description":5771},"Q6QbaesPI6BnpCyNn8g7EHqgwI-Zdj0i6Iy7N4iQtE4",[5776,5778],{"title":2059,"path":2060,"stem":2061,"description":5777,"children":-1},"云原生构建通过将任务下发到指定 Docker 镜像的构建集群执行，用户可在流水线配置中通过`pipeline.runner.tags`指定不同集群，并通过`pipeline.runner.cpus`配置最大 CPU 核数，如`cnb:arch:amd64`支持 1 - 64 核，默认 8 核等不同配置选项 。",{"title":2067,"path":2068,"stem":2069,"description":5779,"children":-1},"该文本主要介绍了云原生构建内置的默认环境变量，这些变量只读不可写。包括基础变量（如 CI、CNB 相关等众多）、提交类变量（与构建时的提交相关）、仓库类变量（和仓库信息有关）、构建类变量（构建相关的详情）、合并类变量（涉及合并类事件相关）、远程开发类变量（远程开发相关）、Issue 类变量（Issue 事件相关）、评论类变量（评论事件相关），并对变量的具体情况进行了详细说明。",1775504723319]