[{"data":1,"prerenderedAt":935},["ShallowReactive",2],{"doc-page:\u002Fdocs\u002Fchrome-devtools":3},{"doc":4,"prev":896,"next":900,"resolvedType":8,"readingMinutes":172,"audience":907,"checklist":911,"related":915},{"path":5,"title":6,"description":7,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13,"body":14},"\u002Fdocs\u002Fchrome-devtools","Chrome DevTools 技巧","控制台技巧、网络调试、性能分析与实用快捷键","article",null,"dev-environment","开发环境","2026-02-27","i-carbon-code",{"type":15,"value":16,"toc":870},"minimark",[17,21,25,29,32,48,51,135,139,554,558,562,570,573,588,591,594,598,655,659,673,677,683,686,697,701,707,711,714,720,723,756,759,762,766,769,780,784,787,802,806,809,820,823,844,847,866],[18,19,6],"h1",{"id":20},"chrome-devtools-技巧",[22,23,24],"p",{},"这页适合做“前端页面排障的第一现场工具表”。很多问题不用先去翻代码，只要先打开 DevTools 看控制台、网络、元素和性能，就已经能快速判断是前端、接口、缓存还是浏览器环境问题。",[26,27,28],"h2",{"id":28},"推荐排障顺序",[22,30,31],{},"遇到页面问题时，通常按下面顺序最省时间：",[33,34,35,39,42,45],"ol",{},[36,37,38],"li",{},"先看 Console 有没有报错和警告",[36,40,41],{},"再看 Network 请求是否成功、是否慢、返回了什么",[36,43,44],{},"然后看 Elements \u002F Computed，确认 DOM 和样式是否正确",[36,46,47],{},"最后再用 Performance \u002F Lighthouse 做性能与体验分析",[26,49,50],{"id":50},"快捷键",[52,53,54,66],"table",{},[55,56,57],"thead",{},[58,59,60,63],"tr",{},[61,62,50],"th",{},[61,64,65],{},"功能",[67,68,69,85,95,105,115,125],"tbody",{},[58,70,71,82],{},[72,73,74,78,79],"td",{},[75,76,77],"code",{},"F12"," \u002F ",[75,80,81],{},"Ctrl+Shift+I",[72,83,84],{},"打开 DevTools",[58,86,87,92],{},[72,88,89],{},[75,90,91],{},"Ctrl+Shift+C",[72,93,94],{},"选择元素",[58,96,97,102],{},[72,98,99],{},[75,100,101],{},"Ctrl+Shift+J",[72,103,104],{},"打开控制台",[58,106,107,112],{},[72,108,109],{},[75,110,111],{},"Ctrl+Shift+M",[72,113,114],{},"切换设备模式",[58,116,117,122],{},[72,118,119],{},[75,120,121],{},"Ctrl+P",[72,123,124],{},"打开文件（Sources）",[58,126,127,132],{},[72,128,129],{},[75,130,131],{},"Ctrl+Shift+P",[72,133,134],{},"命令面板",[26,136,138],{"id":137},"console-技巧","Console 技巧",[140,141,146],"pre",{"className":142,"code":143,"language":144,"meta":145,"style":145},"language-javascript shiki shiki-themes github-light github-dark","\u002F\u002F 表格显示\nconsole.table([\n  { name: \"a\", value: 1 },\n  { name: \"b\", value: 2 },\n]);\n\n\u002F\u002F 分组\nconsole.group(\"API Calls\");\nconsole.log(\"GET \u002Fusers\");\nconsole.log(\"POST \u002Flogin\");\nconsole.groupEnd();\n\n\u002F\u002F 计时\nconsole.time(\"fetch\");\nawait fetch(\"\u002Fapi\u002Fdata\");\nconsole.timeEnd(\"fetch\");\n\n\u002F\u002F 计数\nconsole.count(\"click\"); \u002F\u002F click: 1\nconsole.count(\"click\"); \u002F\u002F click: 2\n\n\u002F\u002F 条件日志\nconsole.assert(x > 0, \"x should be positive\");\n\n\u002F\u002F 样式化输出\nconsole.log(\"%c重要信息\", \"color: red; font-size: 20px; font-weight: bold\");\n\n\u002F\u002F 复制到剪贴板\ncopy(document.title);\n\n\u002F\u002F 获取选中的元素\n$0; \u002F\u002F 当前选中元素\n$(\"selector\"); \u002F\u002F querySelector\n$$(\"selector\"); \u002F\u002F querySelectorAll\n\n\u002F\u002F 监听事件\nmonitorEvents(document, \"click\");\nunmonitorEvents(document);\n","javascript","",[75,147,148,157,170,190,205,211,218,224,241,256,270,281,286,292,307,324,338,343,349,368,384,389,395,420,425,431,450,455,461,470,475,481,490,506,521,526,532,545],{"__ignoreMap":145},[149,150,153],"span",{"class":151,"line":152},"line",1,[149,154,156],{"class":155},"sJ8bj","\u002F\u002F 表格显示\n",[149,158,160,164,167],{"class":151,"line":159},2,[149,161,163],{"class":162},"sVt8B","console.",[149,165,52],{"class":166},"sScJk",[149,168,169],{"class":162},"([\n",[149,171,173,176,180,183,187],{"class":151,"line":172},3,[149,174,175],{"class":162},"  { name: ",[149,177,179],{"class":178},"sZZnC","\"a\"",[149,181,182],{"class":162},", value: ",[149,184,186],{"class":185},"sj4cs","1",[149,188,189],{"class":162}," },\n",[149,191,193,195,198,200,203],{"class":151,"line":192},4,[149,194,175],{"class":162},[149,196,197],{"class":178},"\"b\"",[149,199,182],{"class":162},[149,201,202],{"class":185},"2",[149,204,189],{"class":162},[149,206,208],{"class":151,"line":207},5,[149,209,210],{"class":162},"]);\n",[149,212,214],{"class":151,"line":213},6,[149,215,217],{"emptyLinePlaceholder":216},true,"\n",[149,219,221],{"class":151,"line":220},7,[149,222,223],{"class":155},"\u002F\u002F 分组\n",[149,225,227,229,232,235,238],{"class":151,"line":226},8,[149,228,163],{"class":162},[149,230,231],{"class":166},"group",[149,233,234],{"class":162},"(",[149,236,237],{"class":178},"\"API Calls\"",[149,239,240],{"class":162},");\n",[149,242,244,246,249,251,254],{"class":151,"line":243},9,[149,245,163],{"class":162},[149,247,248],{"class":166},"log",[149,250,234],{"class":162},[149,252,253],{"class":178},"\"GET \u002Fusers\"",[149,255,240],{"class":162},[149,257,259,261,263,265,268],{"class":151,"line":258},10,[149,260,163],{"class":162},[149,262,248],{"class":166},[149,264,234],{"class":162},[149,266,267],{"class":178},"\"POST \u002Flogin\"",[149,269,240],{"class":162},[149,271,273,275,278],{"class":151,"line":272},11,[149,274,163],{"class":162},[149,276,277],{"class":166},"groupEnd",[149,279,280],{"class":162},"();\n",[149,282,284],{"class":151,"line":283},12,[149,285,217],{"emptyLinePlaceholder":216},[149,287,289],{"class":151,"line":288},13,[149,290,291],{"class":155},"\u002F\u002F 计时\n",[149,293,295,297,300,302,305],{"class":151,"line":294},14,[149,296,163],{"class":162},[149,298,299],{"class":166},"time",[149,301,234],{"class":162},[149,303,304],{"class":178},"\"fetch\"",[149,306,240],{"class":162},[149,308,310,314,317,319,322],{"class":151,"line":309},15,[149,311,313],{"class":312},"szBVR","await",[149,315,316],{"class":166}," fetch",[149,318,234],{"class":162},[149,320,321],{"class":178},"\"\u002Fapi\u002Fdata\"",[149,323,240],{"class":162},[149,325,327,329,332,334,336],{"class":151,"line":326},16,[149,328,163],{"class":162},[149,330,331],{"class":166},"timeEnd",[149,333,234],{"class":162},[149,335,304],{"class":178},[149,337,240],{"class":162},[149,339,341],{"class":151,"line":340},17,[149,342,217],{"emptyLinePlaceholder":216},[149,344,346],{"class":151,"line":345},18,[149,347,348],{"class":155},"\u002F\u002F 计数\n",[149,350,352,354,357,359,362,365],{"class":151,"line":351},19,[149,353,163],{"class":162},[149,355,356],{"class":166},"count",[149,358,234],{"class":162},[149,360,361],{"class":178},"\"click\"",[149,363,364],{"class":162},"); ",[149,366,367],{"class":155},"\u002F\u002F click: 1\n",[149,369,371,373,375,377,379,381],{"class":151,"line":370},20,[149,372,163],{"class":162},[149,374,356],{"class":166},[149,376,234],{"class":162},[149,378,361],{"class":178},[149,380,364],{"class":162},[149,382,383],{"class":155},"\u002F\u002F click: 2\n",[149,385,387],{"class":151,"line":386},21,[149,388,217],{"emptyLinePlaceholder":216},[149,390,392],{"class":151,"line":391},22,[149,393,394],{"class":155},"\u002F\u002F 条件日志\n",[149,396,398,400,403,406,409,412,415,418],{"class":151,"line":397},23,[149,399,163],{"class":162},[149,401,402],{"class":166},"assert",[149,404,405],{"class":162},"(x ",[149,407,408],{"class":312},">",[149,410,411],{"class":185}," 0",[149,413,414],{"class":162},", ",[149,416,417],{"class":178},"\"x should be positive\"",[149,419,240],{"class":162},[149,421,423],{"class":151,"line":422},24,[149,424,217],{"emptyLinePlaceholder":216},[149,426,428],{"class":151,"line":427},25,[149,429,430],{"class":155},"\u002F\u002F 样式化输出\n",[149,432,434,436,438,440,443,445,448],{"class":151,"line":433},26,[149,435,163],{"class":162},[149,437,248],{"class":166},[149,439,234],{"class":162},[149,441,442],{"class":178},"\"%c重要信息\"",[149,444,414],{"class":162},[149,446,447],{"class":178},"\"color: red; font-size: 20px; font-weight: bold\"",[149,449,240],{"class":162},[149,451,453],{"class":151,"line":452},27,[149,454,217],{"emptyLinePlaceholder":216},[149,456,458],{"class":151,"line":457},28,[149,459,460],{"class":155},"\u002F\u002F 复制到剪贴板\n",[149,462,464,467],{"class":151,"line":463},29,[149,465,466],{"class":166},"copy",[149,468,469],{"class":162},"(document.title);\n",[149,471,473],{"class":151,"line":472},30,[149,474,217],{"emptyLinePlaceholder":216},[149,476,478],{"class":151,"line":477},31,[149,479,480],{"class":155},"\u002F\u002F 获取选中的元素\n",[149,482,484,487],{"class":151,"line":483},32,[149,485,486],{"class":162},"$0; ",[149,488,489],{"class":155},"\u002F\u002F 当前选中元素\n",[149,491,493,496,498,501,503],{"class":151,"line":492},33,[149,494,495],{"class":166},"$",[149,497,234],{"class":162},[149,499,500],{"class":178},"\"selector\"",[149,502,364],{"class":162},[149,504,505],{"class":155},"\u002F\u002F querySelector\n",[149,507,509,512,514,516,518],{"class":151,"line":508},34,[149,510,511],{"class":166},"$$",[149,513,234],{"class":162},[149,515,500],{"class":178},[149,517,364],{"class":162},[149,519,520],{"class":155},"\u002F\u002F querySelectorAll\n",[149,522,524],{"class":151,"line":523},35,[149,525,217],{"emptyLinePlaceholder":216},[149,527,529],{"class":151,"line":528},36,[149,530,531],{"class":155},"\u002F\u002F 监听事件\n",[149,533,535,538,541,543],{"class":151,"line":534},37,[149,536,537],{"class":166},"monitorEvents",[149,539,540],{"class":162},"(document, ",[149,542,361],{"class":178},[149,544,240],{"class":162},[149,546,548,551],{"class":151,"line":547},38,[149,549,550],{"class":166},"unmonitorEvents",[149,552,553],{"class":162},"(document);\n",[26,555,557],{"id":556},"network-面板","Network 面板",[559,560,561],"h3",{"id":561},"过滤请求",[140,563,568],{"className":564,"code":566,"language":567},[565],"language-text","# 按类型\nmethod:POST\nstatus-code:404\ndomain:api.example.com\nlarger-than:1M\n-has-response-header:cache-control\n\n# 正则\n\u002Fapi\\\u002Fv[12]\u002F\n","text",[75,569,566],{"__ignoreMap":145},[559,571,572],{"id":572},"模拟网络条件",[574,575,576,579,582,585],"ul",{},[36,577,578],{},"打开 Network 面板",[36,580,581],{},"点击 \"No throttling\" 下拉",[36,583,584],{},"选择 Slow 3G \u002F Fast 3G \u002F Offline",[36,586,587],{},"或自定义：Add custom profile",[559,589,590],{"id":590},"复制请求",[22,592,593],{},"右键请求 → Copy → Copy as fetch \u002F Copy as cURL",[26,595,597],{"id":596},"elements-面板","Elements 面板",[140,599,601],{"className":142,"code":600,"language":144,"meta":145,"style":145},"\u002F\u002F 强制元素状态\n\u002F\u002F 右键元素 → Force state → :hover \u002F :active \u002F :focus\n\n\u002F\u002F 编辑 HTML\n\u002F\u002F 双击元素文本直接编辑\n\n\u002F\u002F 隐藏元素\n\u002F\u002F 选中元素按 H 键\n\n\u002F\u002F 截图元素\n\u002F\u002F 右键元素 → Capture node screenshot\n",[75,602,603,608,613,617,622,627,631,636,641,645,650],{"__ignoreMap":145},[149,604,605],{"class":151,"line":152},[149,606,607],{"class":155},"\u002F\u002F 强制元素状态\n",[149,609,610],{"class":151,"line":159},[149,611,612],{"class":155},"\u002F\u002F 右键元素 → Force state → :hover \u002F :active \u002F :focus\n",[149,614,615],{"class":151,"line":172},[149,616,217],{"emptyLinePlaceholder":216},[149,618,619],{"class":151,"line":192},[149,620,621],{"class":155},"\u002F\u002F 编辑 HTML\n",[149,623,624],{"class":151,"line":207},[149,625,626],{"class":155},"\u002F\u002F 双击元素文本直接编辑\n",[149,628,629],{"class":151,"line":213},[149,630,217],{"emptyLinePlaceholder":216},[149,632,633],{"class":151,"line":220},[149,634,635],{"class":155},"\u002F\u002F 隐藏元素\n",[149,637,638],{"class":151,"line":226},[149,639,640],{"class":155},"\u002F\u002F 选中元素按 H 键\n",[149,642,643],{"class":151,"line":243},[149,644,217],{"emptyLinePlaceholder":216},[149,646,647],{"class":151,"line":258},[149,648,649],{"class":155},"\u002F\u002F 截图元素\n",[149,651,652],{"class":151,"line":272},[149,653,654],{"class":155},"\u002F\u002F 右键元素 → Capture node screenshot\n",[559,656,658],{"id":657},"css-调试","CSS 调试",[574,660,661,664,667,670],{},[36,662,663],{},"点击颜色值可打开取色器",[36,665,666],{},"点击 box model 可直接编辑 margin\u002Fpadding",[36,668,669],{},"Computed 面板查看最终计算样式",[36,671,672],{},"点击属性旁的链接跳转到源文件",[26,674,676],{"id":675},"performance-面板","Performance 面板",[140,678,681],{"className":679,"code":680,"language":567},[565],"1. 点击录制按钮\n2. 执行要分析的操作\n3. 停止录制\n4. 分析火焰图：\n   - 黄色：JavaScript\n   - 紫色：渲染\n   - 绿色：绘制\n",[75,682,680],{"__ignoreMap":145},[559,684,685],{"id":685},"常见性能问题",[574,687,688,691,694],{},[36,689,690],{},"长任务（Long Tasks）：超过 50ms 的任务",[36,692,693],{},"布局抖动（Layout Thrashing）：频繁读写 DOM",[36,695,696],{},"强制同步布局：在修改 DOM 后立即读取布局属性",[26,698,700],{"id":699},"application-面板","Application 面板",[140,702,705],{"className":703,"code":704,"language":567},[565],"- Local Storage \u002F Session Storage：查看和编辑\n- Cookies：查看、编辑、删除\n- Service Workers：查看注册状态\n- Cache Storage：查看缓存内容\n",[75,706,704],{"__ignoreMap":145},[26,708,710],{"id":709},"lighthouse","Lighthouse",[22,712,713],{},"内置的网站审计工具：",[140,715,718],{"className":716,"code":717,"language":567},[565],"1. 打开 Lighthouse 面板\n2. 选择类别：Performance \u002F Accessibility \u002F SEO \u002F Best Practices\n3. 点击 Analyze page load\n4. 查看评分和优化建议\n",[75,719,717],{"__ignoreMap":145},[26,721,722],{"id":722},"高频使用场景",[574,724,725,732,738,744,750],{},[36,726,727,731],{},[728,729,730],"strong",{},"页面白屏 \u002F 功能失效","：先看 Console",[36,733,734,737],{},[728,735,736],{},"接口异常 \u002F 数据不对","：先看 Network",[36,739,740,743],{},[728,741,742],{},"样式错乱 \u002F 布局异常","：先看 Elements 与 Computed",[36,745,746,749],{},[728,747,748],{},"页面卡顿 \u002F 滚动掉帧","：看 Performance",[36,751,752,755],{},[728,753,754],{},"缓存、Cookie、Service Worker 问题","：看 Application",[22,757,758],{},"把面板和问题类型对上，排障速度会快很多。",[26,760,761],{"id":761},"常见问题",[559,763,765],{"id":764},"请求明明发了但页面没更新","请求明明发了，但页面没更新",[22,767,768],{},"先确认：",[574,770,771,774,777],{},[36,772,773],{},"Network 返回的数据是否正确",[36,775,776],{},"Console 是否有运行时错误",[36,778,779],{},"页面是否命中了缓存或旧 Service Worker",[559,781,783],{"id":782},"改了-css-没生效","改了 CSS 没生效",[22,785,786],{},"优先检查：",[574,788,789,792,795],{},[36,790,791],{},"最终命中的选择器是谁",[36,793,794],{},"是否被更高优先级样式覆盖",[36,796,797,798,801],{},"是否有行内样式、",[75,799,800],{},":hover","、媒体查询或 CSS 变量干扰",[559,803,805],{"id":804},"本地正常线上异常","本地正常，线上异常",[22,807,808],{},"可以善用：",[574,810,811,814,817],{},[36,812,813],{},"Network 面板里的请求头 \u002F 响应头对比",[36,815,816],{},"设备模式与限速模式",[36,818,819],{},"禁用缓存后重现问题",[26,821,822],{"id":822},"延伸阅读",[574,824,825,832,838],{},[36,826,827],{},[828,829,831],"a",{"href":830},"\u002Fdocs\u002Fapi-design","RESTful API 设计",[36,833,834],{},[828,835,837],{"href":836},"\u002Fdocs\u002Ftesting-guide","前端测试指南",[36,839,840],{},[828,841,843],{"href":842},"\u002Fdocs\u002Fnuxt-vue-notes","Vue 3 \u002F Nuxt 开发笔记",[26,845,846],{"id":846},"参考链接",[574,848,849,858],{},[36,850,851,857],{},[828,852,856],{"href":853,"rel":854},"https:\u002F\u002Fdeveloper.chrome.com\u002Fdocs\u002Fdevtools\u002F",[855],"nofollow","Chrome DevTools 文档"," — 官方文档",[36,859,860,865],{},[828,861,864],{"href":862,"rel":863},"https:\u002F\u002Fdevtoolstips.org\u002F",[855],"DevTools Tips"," — 技巧集合",[867,868,869],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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);}",{"title":145,"searchDepth":159,"depth":159,"links":871},[872,873,874,875,880,883,886,887,888,889,894,895],{"id":28,"depth":159,"text":28},{"id":50,"depth":159,"text":50},{"id":137,"depth":159,"text":138},{"id":556,"depth":159,"text":557,"children":876},[877,878,879],{"id":561,"depth":172,"text":561},{"id":572,"depth":172,"text":572},{"id":590,"depth":172,"text":590},{"id":596,"depth":159,"text":597,"children":881},[882],{"id":657,"depth":172,"text":658},{"id":675,"depth":159,"text":676,"children":884},[885],{"id":685,"depth":172,"text":685},{"id":699,"depth":159,"text":700},{"id":709,"depth":159,"text":710},{"id":722,"depth":159,"text":722},{"id":761,"depth":159,"text":761,"children":890},[891,892,893],{"id":764,"depth":172,"text":765},{"id":782,"depth":172,"text":783},{"id":804,"depth":172,"text":805},{"id":822,"depth":159,"text":822},{"id":846,"depth":159,"text":846},{"path":897,"title":898,"description":899,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fapi-testing","API 测试与调试","curl、HTTPie、Postman、Bruno 等 API 测试工具与常用技巧",{"path":901,"title":902,"description":903,"docType":8,"resourceKind":9,"categoryId":904,"categoryLabel":905,"updatedAt":12,"publishedAt":12,"icon":906},"\u002Fdocs\u002Fci-cd-guide","CI\u002FCD 实践指南","持续集成与部署概念、GitHub Actions 进阶、自动化测试与部署策略","infra-deployment","服务器与部署","i-carbon-cloud",[908,909,910],"希望把零散经验整理成长期可复用工作流的人","正在搭建开发环境、统一工具链或排查构建问题的开发者","希望阅读时顺手建立自己的操作清单或收藏体系的人",[912,913,914],"先浏览标题、摘要和目录，带着问题阅读会更高效","确认本机 Node、包管理器、终端和仓库依赖版本是否一致","如果页面里提到相关文档，尽量一起打开对照，效果通常更完整",[916,921,926,931],{"path":917,"title":918,"description":919,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":920,"publishedAt":920,"icon":13},"\u002Fdocs\u002Flocal-setup","本地运行与部署","使用 bun 安装、开发、构建与预览 DomiVault 的完整本地流程与排障指引","2026-03-10",{"path":922,"title":923,"description":924,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":925,"publishedAt":925,"icon":13},"\u002Fdocs\u002Fvolta-guide","Volta Node 版本管理","使用 Volta 管理 Node.js、npm、pnpm 和 Yarn，并在项目中固定 JavaScript 工具链版本","2026-03-08",{"path":927,"title":928,"description":929,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":930,"publishedAt":930,"icon":13},"\u002Fdocs\u002Fpnpm-monorepo","pnpm 与 Monorepo","pnpm 使用技巧、workspace 配置、Monorepo 项目管理与 Turborepo","2026-02-28",{"path":932,"title":933,"description":934,"docType":8,"resourceKind":9,"categoryId":10,"categoryLabel":11,"updatedAt":12,"publishedAt":12,"icon":13},"\u002Fdocs\u002Fenv-variables","环境变量管理","dotenv 配置、各平台环境变量设置、.env 文件规范与安全实践",1776215712433]