当前位置: 首页 > 后端技术 > Node.js

如何优雅地在项目中设置多个环境变量

时间:2023-04-03 15:31:23 Node.js

浼楁墍鍛ㄧ煡锛岄」鐩畬鎴愬悗浼氭墦鍖呭苟鍚姩浠g爜銆傛湁鏃跺€欐垜浠渶瑕佸湪涓嶅悓鐨勭幆澧冨悓鏃朵笂缃戙€傞拡瀵逛笉鍚岀殑鐜锛屾垜浠睍绀虹殑椤甸潰鍜屽姛鑳芥湁鏃朵細鏈夊緢澶у樊寮傘€傚彉鍖栵紝閭d箞鎴戜滑濡備綍搴斿杩欐牱鐨勫彉鍖栧憿锛熼棶棰樺湪Web搴旂敤绋嬪簭涓紝鎴戝彂鐜颁竴浜涘井涓嶈冻閬撶殑浜嬫儏鍙樺緱寰笉瓒抽亾涓旈毦浠ュ畬鎴愩€傚叾涓箣涓€灏辨槸澶勭悊涓嶅悓鐨勭幆澧冨彉閲忋€傚綋鎮ㄤ粛鍦ㄥ紑鍙戞偍鐨勫簲鐢ㄧ▼搴忔椂锛岄€氬父鍙湁涓€涓幆澧冨緢濂斤紝浣嗘槸褰撲竴浜涘叾浠栫敤鎴峰紑濮嬫祴璇曞畠鎴栨偍鎯宠鍙戝竷瀹冩椂锛屾偍鍙兘甯屾湜涓烘偍鐨凙PI浣跨敤涓嶅悓鐨刄RL锛屼緥濡傚紑鍙戠増鏈殑API銆傝闂柊鐨勭鐐规垨鏇村叏闈㈢殑璁板綍鍣紝浠ュ強缁忚繃鑹ソ娴嬭瘯骞跺叿鏈夊彂甯冪増鏈殑鐢熶骇鏁版嵁搴撶殑API鐨勭敓浜у氨缁増鏈€傛湁鏃舵偍闇€瑕佷袱涓互涓婄殑鐜锛屼緥濡傦細寮€鍙戯細杩欐槸鎮ㄥ紑鍙戝簲鐢ㄧ▼搴忔墍鏈夋柊鍔熻兘鐨勫湴鏂癸紱杩欎釜鐜宸茬粡鍑嗗濂藉府鍔╀綘鑾峰緱鏇村ソ鐨勬棩蹇楀拰涓€涓亣鏁版嵁搴擄紝濡傛灉浣犺姳璐瑰緢澶氾紝浣犲彲浠ラ殢鎰忓垹闄ゅ苟閲嶆柊鍒涘缓瀹冧滑锛涚敓浜э細杩欐槸浣犲皢鍙戝竷鐨勭増鏈紝閭d箞浣犲浣曚负涓嶅悓鐨勭幆澧冨瓨鍌紙鍜屼娇鐢級涓嶅悓鐨勫彉閲忥紵鏄剧劧锛屾垜璇曞浘璋锋瓕瀵绘壘绛旀锛屼絾鎴戝彂鐜扮殑瑙e喅鏂规浼间箮澶毦鎴栦笉澶熺伒娲汇€備娇鐢?env鏄繖涓枃浠躲€傛垜浠彲浠ュ湪鏂囦欢涓畾涔夋垜浠渶瑕佺殑閰嶇疆锛岀劧鍚庡湪椤圭洰涓娇鐢╬rocess.env鍏ㄥ眬鍙橀噺鏉ヨ幏鍙栥€傚0鏄庣殑灞炴€у湪vue鍜宺eact涓湁鐗规畩鐨勫懡鍚嶈姹傘€傛瘮濡倂ue涓殑灞炴€у悕蹇呴』浠UE\_APP\_寮€澶达紝姣斿VUE\_APP\_XXX锛宺eact闇€瑕佷互REACT_APP寮€澶淬€備笉骞哥殑鏄紝瀹冧技涔庢渶澶氬彧鑳藉鐞嗕袱绉嶇幆澧冿紙涓€绉嶅紑鍙戠幆澧冨拰涓€绉嶅彂甯?鐢熶骇鐜锛夛紝骞朵笖杩樻湁涓€浜涘彲鎬曠殑鍙橀噺缂撳瓨銆傛洿绠€鍗曠殑鏂规锛屽弬鑰冨悗绔厤缃墦鍖卲rofile鐨勬柟寮忋€傝繖鏄垜鐩墠姝e湪浣跨敤鐨勬柟娉曪紱鍑嗗濂芥偍鐨勬墜鎸囷紝鍥犱负鎮ㄥ皢闇€瑕佸垱寤轰竴浜涙柊鏂囦欢銆傞鍏堬紝鎴戜滑灏嗘墍鏈夌幆澧冨瓨鍌ㄥ湪envs鏂囦欢澶逛腑鐨凧SON鏂囦欢涓€傛垜灏嗕负鏈枃鍒涘缓3涓幆澧冿紙寮€鍙戙€佹殏瀛樺拰鐢熶骇锛夛紝姣忎釜鐜閮芥湁涓嶅悓鐨凙PI\_URL銆傛樉鐒讹紝鎮ㄥ彲浠ユ牴鎹渶瑕佹坊鍔犱换鎰忔暟閲忕殑鍙橀噺锛乪nvs/development.json{"API\_URL":"https://development.api.com",}envs/staging.json{"API\_URL":"https://staging.api.com",}envs/production.json{"API\_URL":"https://production.api.com",}鐜板湪锛屾垜浠皢鍒涘缓涓€涓妭鐐硅剼鏈紝姣忔鎴戜滑鎯宠鍒囨崲鐜鏃堕兘浼氭洿鏀圭幆澧冩枃浠躲€傛垜鎶婂畠鏀惧湪鑴氭湰鏂囦欢澶逛腑锛堟垜鏈夊叾浠栬剼鏈彲浠ヨ嚜鍔ㄦ墽琛屾瀯寤鸿繃绋嬬殑鍏朵粬閮ㄥ垎锛塻cripts/set-environment.js#锛?bin/nodeconstfs=require("fs");//鑾峰彇浼犻€掔粰node鑴氭湰鐨勭幆澧冨瓧绗︿覆constenvironment=process.argv[2]//璇诲彇json鏂囦欢鍐呭constenvFileContent=require(`../envs/${鐜}.json`);//灏唀nv.json鏂囦欢閲岄潰鐨刯son澶嶅埗鍒癴s.writeFileSync("env.json",JSON.stringify(envFileContent,undefined,2));杩欒缃簡environment.js棣栧厛锛屽畠灏嗙涓€涓弬鏁板瓨鍌ㄥ湪涓€涓彉閲忎腑锛屽綋浣犺皟鐢ㄨ剼鏈椂锛屽畠浼氳姹傛牴鏂囦欢澶逛腑鐨勫悓鍚嶆枃浠秂nvs锛屾渶鍚庡畠浼氬垱寤轰竴涓猠nv.json鏂囦欢锛屽叾涓寘鍚玡nvFileContent鍐呭銆傜幇鍦ㄦ垜浠彲浠ュ皾璇曡皟鐢╪odescripts/set-environment.jsdevelop鉁∕AGIC鉁?..鍦ㄦ纭殑浣嶇疆鍒涘缓涓€涓柊鐨別nv.json鏂囦欢锛屼负鎵€鏈夊彉閲忔彁渚涙湇鍔°€傛澶栵紝鎮ㄥ彲浠ュ湪package.json鏂囦欢涓缃竴浜涜剼鏈潵鍒囨崲鐜锛岃€屾棤闇€鍦ㄧ粓绔腑閿叆鎵€鏈夊崟璇嶏細鍙渶閿叆yarnenv:dev銆倇"name":"浣犵殑搴旂敤鍚嶇О","scripts":{"start":"start","env:staging":"nodescripts/set-environment.jsstaging","env:dev":"nodescripts/set-environment.jsdev","env:prod":"nodescripts/set-environment.jsprod,"duction",...},"dependencies":{...},...}鍚姩鏃跺厛鏍规嵁闇€瑕佸惎鍔ㄥ搴旂殑env鍛戒护锛坣pmrunenv:staging锛夛紝鐒跺悗鐢╪pmrunstart鍛戒护鍚姩椤圭洰锛屼篃鍙互浣跨敤concurrently鍚堝苟鍚姩鍛戒护濡備綍浣跨敤鏂扮殑.env鏂囦欢鍦ㄤ唬鐮佷腑鐜板湪锛屼綘鍙渶瑕佷粠src/env.json鏂囦欢涓鍏ュ彉閲忥紝灏卞彲浠ヤ簡锛侌煔€濡備綍鑷姩鍒囨崲鐜鐜板湪锛屾垜浠渶瑕佷竴绉嶈嚜鍔ㄥ垏鎹㈢幆澧冪殑鏂规硶銆傚鏋滄垜浠垱寤轰竴浜沺ackage.json涓柊澧炶剼鏈紝杩欎釜鍑犱箮鏄厤璐圭殑锛屽悗鏈熸垜浠篃鍙互灏嗘墦鍖呭悗鐨勬枃浠讹紙src/env.json锛夌粺涓€鏀惧湪涓€涓枃浠朵腑锛屽彧闇€瑕佷慨鏀筬s鐨勫啓鍏ヨ矾寰勫嵆鍙湪/set-environment.js鏂囦欢涓€?/p>