摘要:一句話介紹是一個強大的配置文件加載器,無論你喜歡還是,都能滿足你的愿望,并且更加簡單更加強大。
一句話介紹
Confman 是一個強大的配置文件加載器,無論你喜歡 yaml 、cson、json、properties、plist、ini、toml、xml 還是 js,都能滿足你的愿望,并且更加簡單、更加強大。
支持的特性
支持多種配置文件格式,默認包括 yaml/cson/json/properties/plist/ini/toml/xml/js
支持配置文件相互引用,無論何種格式都可以「引用其它任意格式」的配置文件
支持「基于目錄」的多文件配置
支持「環(huán)境配置」,區(qū)分加載生產(chǎn)、測試等不同的配置
可以非常方便的「擴展」新的配置文件格式
可以「混合使用」不同的配置文件格式
內(nèi)置多種「指令」,并可輕易的擴展新的指令
現(xiàn)在就安裝$ npm install confman --save來幾個示例 不同的環(huán)境配置
目錄
app ├── index.js ├── config.dev.yaml ├── config.prod.yaml └── config.yaml
index.js
const confman = require("confman"); const configs = confman.load(`${__dirname}/config`); console.log(configs);
啟動應(yīng)用
$ NODE_ENV=prod node index.js
通過指定 NODE_ENV 可以加載指定的「環(huán)境配置文件 config.prod.yaml」,并和「默認配置 config.yaml」進行合并,
如果有相同的配置,「環(huán)境配置會覆蓋默認配置」
文件一: test1.yaml
name: test1 #可以使用 $require 引用其它文件 child: $requrie ./test2
文件二: test2.json
{ "name": "test2", "child": "$require other-file" }
$require 可以在任意支持的格式的配置文件中使用
基于目錄的多文件配置目錄結(jié)構(gòu)
├── config │?? ├── conn.yaml │?? ├── index.yaml │?? └── mvc.yaml ├── config.dev │?? └── conn.yaml ├── config.prod │?? └── conn.yaml └── index.js
index.js
const confman = require("confman"); const configs = confman.load(`${__dirname}/config`); console.log(configs);添加新格式
其實,多數(shù)情況你不需要這么做,如果確實有需要,你可這樣編寫一個自定義 loader
module.exports = { extname: ".xxx", load: function (configPath) { //... return configs; } };
注冊自定義 loader
confman.loaders.push(require("your-loader-path"));新的擴展名
方式一,映射到一個已經(jīng)添加的 loader
confman.loaders.push({ extname: ".xxx", loader: ".yaml" });
方式二,直接映射到一個未添加的自定義 loader
confman.loaders.push({ extname: ".xxx", loader: require("your-loader-path") });內(nèi)置的指令
如上邊用到的 $require,Confman 允許使用指令完成某些配置,內(nèi)置的指令包括:
$require 引用指令,用于引用其它配置文件,參數(shù)為相對于當(dāng)前文件的相對路徑或絕對路徑
$calc 計算指令,用于計算一個表達式,如 $calc root.baseUrl+"/xxx" (表達式中可用變量有 root:根對象,parent:父對象,self:當(dāng)前對象)
$read 讀取指令,用于讀取一個文本文件,參數(shù)為相對于當(dāng)前文件的相對路徑或絕對路徑
示例 example.yaml
name: example test1: $require ./test1.json test2: $read ./test2.txt test3: $calc root.name + ":test3"
假如 test1.json 的內(nèi)容為 { "name": "test1" },test2.txt 的內(nèi)容為 my name is test2,
通過 Confman.load("./example") 加載 example 的結(jié)果為:
{ "name": "example", "test1": { "name": "test1" }, "test2": "my name is test2", "test3": "example:test3" }自定義指令
編寫一個自定義指令的代碼如下:
module.exports = { name: "xxx", exec: function(context){ //context.fromPath 來自哪個配置文件 //context.parser 當(dāng)前 Confman 實例 //context.root 根對象 //context.parent 父對象 //context.self 當(dāng)前對象 //context.name 配置屬性名 //context.value 指令后的值 return {} //返回值為指令執(zhí)行結(jié)果 } };
注冊自定義指令
confman.directives.push(require("your_directive_path"));其它的問題
新的建議或 Bug 請使用 isseus 反饋
貢獻代碼,請使用 Pull Request,需一并提交相關(guān)測試并且不能低于現(xiàn)有覆蓋率
現(xiàn)在或?qū)碛锌赡軙玫剑磕悄銘?yīng)該去加個 Star
GitHub : https://github.com/Houfeng/co...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86440.html
摘要:打包分析與性能優(yōu)化背景在去年年末參與的一個項目中,項目技術(shù)棧使用,生產(chǎn)環(huán)境全量構(gòu)建將近三分鐘,項目業(yè)務(wù)模塊多達數(shù)百個,項目依賴數(shù)千個,并且該項目協(xié)同前后端開發(fā)人員較多,提高構(gòu)建效率,成為了改善團隊開發(fā)效率的關(guān)鍵之一。 webpack打包分析與性能優(yōu)化 背景 在去年年末參與的一個項目中,項目技術(shù)棧使用react+es6+ant-design+webpack+babel,生產(chǎn)環(huán)境全量構(gòu)建將...
摘要:以為例,編寫來幫助我們完成重復(fù)的工作編譯壓縮我只要執(zhí)行一下就可以檢測到文件的變化,然后為你執(zhí)行一系列的自動化操作,同樣的操作也發(fā)生在這些的預(yù)處理器上。的使用是針對第三方類庫使用各種模塊化寫法以及語法。 showImg(https://segmentfault.com/img/bVbtZYK); 一:前端工程化的發(fā)展 很久以前,互聯(lián)網(wǎng)行業(yè)有個職位叫做 軟件開發(fā)工程師 在那個時代,大家可能...
摘要:之輸出的最后就是為了得到打包結(jié)果。在這里可以看到很多相似,但是有不同含義的名次,如和,和,那他們有什么區(qū)別呢而這里的又是什么意思呢將多個模塊打包之后的代碼集合稱為。在這樣打包的話,會報錯。所以就想搞明白這兩個的區(qū)別到底是什么。webpack之輸出 webpack的最后就是為了得到打包結(jié)果。 那這是一個怎么樣的過程,不同的配置,會有什么樣的結(jié)果呢? 本文的原文在我的博客中:github.com...
摘要:環(huán)境變量法通過上一節(jié)的源碼分析,我們知道了的作用,那么如何使用或者優(yōu)雅的使用來解決依賴加載問題呢嘗試一最為直接的是,修改系統(tǒng)的環(huán)境變量。 模塊加載痛點 大家也或多或少的了解node模塊的加載機制,最為粗淺的表述就是依次從當(dāng)前目錄向上級查詢node_modules目錄,若發(fā)現(xiàn)依賴則加載。但是隨著應(yīng)用規(guī)模的加大,目錄層級越來越深,若是在某個模塊中想要通過require方式以依賴名稱或相對路...
閱讀 2095·2021-11-02 14:48
閱讀 2772·2019-08-30 14:19
閱讀 2940·2019-08-30 13:19
閱讀 1308·2019-08-29 16:17
閱讀 3246·2019-08-26 14:05
閱讀 3000·2019-08-26 13:58
閱讀 3087·2019-08-23 18:10
閱讀 1114·2019-08-23 18:04