境變量完全指南:一次配置,所有集合共用)
Bruno 全局環(huán)境變量完全指南一次配置所有集合共用【免費下載鏈接】brunoOpensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia)項目地址: https://gitcode.com/GitHub_Trending/br/brunoBruno 是一款開源的 API 探索與測試客戶端常被當(dāng)作 Postman/Insomnia 的輕量替代。它的全局環(huán)境變量讓你把哪些配置該被所有集合共享這件事一次性做對URL、令牌、端口寫一份處處可用。讀完這篇文章你能獨立創(chuàng)建全局環(huán)境、用腳本動態(tài)修改變量、在 CLI 和 CI 里復(fù)用同一套配置并繞開最常見的幾個坑。一、為什么你需要它先想一個熟悉到頭疼的場景你維護著三個集合分別打本地、預(yù)發(fā)、生產(chǎn)三套后端。每個集合里各存了一份 baseUrl 和 token?,F(xiàn)在預(yù)發(fā)的域名換了——你翻出三處配置逐個改還漏掉了一個CI 紅了半天才定位到。更隱蔽的坑是認(rèn)證。集合 A 登錄拿到的 token集合 B 里想用只能手動復(fù)制粘貼。值一變所有用到它的地方都要跟著變。全局環(huán)境變量Global Environment Variables就是為解決這兩類問題存在的配置只存一份所有集合共享還能被腳本改寫、在 CI 里注入。它和集合環(huán)境最大的區(qū)別就一句話——集合環(huán)境只對單個集合生效全局環(huán)境跟著 Workspace 走跨集合、跨項目都可用。二、核心機制速覽在動手之前先用 30 秒把全局環(huán)境變量的機制說清楚。Bruno 主界面右上角的環(huán)境選擇器里Collection 和 Global 兩個標(biāo)簽就是這套機制的入口請求里的{{baseUrl}}正是從全局環(huán)境取值后拼出真實 URL 的把 Bruno 的變量系統(tǒng)想成一張合并表規(guī)則只有三條存成文件每個全局環(huán)境就是 Workspace 目錄下environments/里的一個.yml文件純文本可讀可改天然適合版本控制。按優(yōu)先級合并請求發(fā)出前全局、集合、環(huán)境、文件夾、請求等多層變量按固定順序合并成一張查找表。占位符取值{{xxx}}寫進 URL、Header、Body發(fā)請求時從表里查值替換。一句話復(fù)述全局環(huán)境變量是 Workspace 級的一批.yml配置發(fā)請求時按優(yōu)先級合并{{xxx}}占位符從中取值。機制說清了下面上手。三、從零到一上手創(chuàng)建第一個全局環(huán)境第 1 步打開全局環(huán)境面板點頂部環(huán)境選擇器切到Global標(biāo)簽點創(chuàng)建輸入環(huán)境名比如Local。第 2 步填入鍵值對在變量表格加一行baseUrlhttp://localhost:8081。值可以是數(shù)字或布爾Bruno 會自動識別類型不用手動聲明。第 3 步在請求里引用把任意請求的 URL 改成{{baseUrl}}/ping發(fā)送。頂部環(huán)境選擇器里會顯示當(dāng)前激活的全局環(huán)境。第 4 步按需再建幾個環(huán)境照同樣方式建Staging、Production切換環(huán)境 切下拉框請求定義一個字都不用改。四步走完你已經(jīng)有了一個可切換的多環(huán)境配置層。想知道這一層在代碼里到底怎么實現(xiàn)的往下拆。四、拆開看原理變量是怎么合并、寫回和插值的上面四步背后代碼分三段合并、寫回、插值。1. 合并運行時把各層變量按固定順序展開成一張表后寫的覆蓋先寫的。源碼在 packages/bruno-js/src/runtime/assert-runtime.jsconst context { ...globalEnvironmentVariables, // 全局環(huán)境最低優(yōu)先級 ...collectionVariables, ...envVariables, ...folderVariables, ...requestVariables, ...oauth2CredentialVariables, ...runtimeVariables, ...processEnvVars, // 系統(tǒng)進程變量最高 ...bruContext };所以同名變量誰贏是有明確答案的全局環(huán)境墊底集合、環(huán)境、文件夾、請求、OAuth 憑據(jù)、運行時、系統(tǒng)進程變量依次抬高。2. 寫回腳本里用bru.setGlobalEnvVar()改全局變量API 定義在 packages/bruno-js/src/bru.jsscript:post-response { bru.setGlobalEnvVar(global_num, 42); // 數(shù)字 bru.setGlobalEnvVar(global_bool, true); // 布爾 }腳本運行時只會把變更標(biāo)記為臟請求跑完后packages/bruno-cli/src/utils/persist-variables.js 負(fù)責(zé)把變更合并回.yml文件并根據(jù)值的類型自動補上dataType標(biāo)注——這就是第 2 步類型自動識別的來源。3. 插值{{xxx}}的替換在 packages/bruno-common/src/interpolate/ 模塊完成。它按正則逐個匹配占位符支持點號取嵌套字段如{{user.name}}支持變量值里再嵌變量的鏈?zhǔn)教鎿Q查不到的占位符會原樣保留并觸發(fā)未解析提示。CLI 側(cè)還有兩個關(guān)鍵參數(shù)見 packages/bruno-cli/src/commands/run.js--global-env 名稱指定使用哪個全局環(huán)境文件--global-env-var 鍵值注入臨時值。原理清楚了下面用三個真實任務(wù)把這些能力串起來。五、組合實戰(zhàn)三個任務(wù)串起來任務(wù) 1一次登錄全 Workspace 共用 token目標(biāo)集合 A 里登錄拿到的 token讓集合 B、C 直接可用。做法在登錄請求的 post-response 腳本里把響應(yīng)中的 token 寫進全局變量其他任意集合的請求頭里寫Authorization: Bearer {{authToken}}。效果一次登錄所有集合復(fù)用。token 還會落盤到環(huán)境文件下次啟動不用重新登錄。任務(wù) 2CI 里跑測試密鑰不進倉庫目標(biāo)在 CI 中執(zhí)行 Bruno CLI使用生產(chǎn)全局環(huán)境但不把任何密鑰提交進倉庫。做法bru run request.bru --global-env Production --global-env-var TOKENCI secret效果密鑰只活在 CI 的 secret 里通過--global-env-var臨時注入。這個注入值有防泄漏保護——不會寫進.yml文件本地環(huán)境文件保持干凈。任務(wù) 3環(huán)境間繼承把重復(fù)配置砍掉目標(biāo)Staging和Base有 80% 相同的配置不想維護兩份。做法在Staging環(huán)境里聲明extends: Base只寫差異項。效果Base改一處繼承方全部跟著變。這套繼承關(guān)系同樣落在.yml文件里團隊通過 Git 同步。三個任務(wù)覆蓋了三類典型訴求跨集合共享、CI 安全注入、配置去重。真正落地時坑往往藏在細(xì)節(jié)里。六、避坑與排錯清單Q1{{xxx}}原樣發(fā)出去沒被替換原因通常是當(dāng)前激活的全局環(huán)境里沒有這個鍵或拼寫不一致。打開環(huán)境面板核對變量名確認(rèn)右上角選中的是 Global 環(huán)境仍不放心就在腳本里用bru.getGlobalEnvVar(xxx)打印實際讀到的值。Q2腳本里setGlobalEnvVar了為什么沒落盤App 中腳本寫回默認(rèn)生效但 CLI 必須顯式傳--global-env指定目標(biāo)環(huán)境文件不傳的話腳本修改只存在于內(nèi)存跑完即丟。Q3數(shù)字、布爾變量被當(dāng)字符串用了類型信息存在環(huán)境文件的dataType標(biāo)注里。Bruno 寫回磁盤時會自動推斷并補上手寫 YAML 時確保值不帶引號42而非42。Q4同名變量打架到底誰生效回到第二節(jié)的合并表優(yōu)先級從低到高依次是全局環(huán)境 → 集合變量 → 環(huán)境變量 → 文件夾變量 → 請求變量 → OAuth 憑據(jù) → 運行時變量 → 系統(tǒng)進程變量。后合并的贏按這個順序查表即可。Q5為什么秘文變量的值不落盤這是安全設(shè)計不是 bug。標(biāo)記secret: true的變量值存在獨立的加密存儲里.yml只留變量名腳本通過setGlobalEnvVar寫入的秘文值同樣不會寫進文件。好處是.yml可以放心提交進 Git。坑排完了最后收個尾。七、延伸閱讀全局環(huán)境變量這套機制一句話總結(jié)就是文件存配置、合并定優(yōu)先級、腳本可寫回。想繼續(xù)深入建議按這個順序讀插值引擎packages/bruno-common/src/interpolate/腳本 APIpackages/bruno-js/src/bru.js變量寫回邏輯packages/bruno-cli/src/utils/persist-variables.jsCLI 參數(shù)packages/bruno-cli/src/commands/run.js中文文檔入口docs/readme/readme_cn.md把全局環(huán)境當(dāng)配置層來用你的 Bruno 工作流就真正搭起來了。【免費下載鏈接】brunoOpensource IDE For Exploring and Testing APIs (lightweight alternative to Postman/Insomnia)項目地址: https://gitcode.com/GitHub_Trending/br/bruno創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考