国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Confman - 針對(duì)「Node 應(yīng)用」的配置文件加載模塊

venmos / 443人閱讀

摘要:一句話介紹是一個(gè)強(qiáng)大的配置文件加載器,無(wú)論你喜歡還是,都能滿足你的愿望,并且更加簡(jiǎn)單更加強(qiáng)大。

一句話介紹

Confman 是一個(gè)強(qiáng)大的配置文件加載器,無(wú)論你喜歡 yaml 、cson、json、properties、plist、ini、toml、xml 還是 js,都能滿足你的愿望,并且更加簡(jiǎn)單、更加強(qiáng)大。

支持的特性

支持多種配置文件格式,默認(rèn)包括 yaml/cson/json/properties/plist/ini/toml/xml/js

支持配置文件相互引用,無(wú)論何種格式都可以「引用其它任意格式」的配置文件

支持「基于目錄」的多文件配置

支持「環(huán)境配置」,區(qū)分加載生產(chǎn)、測(cè)試等不同的配置

可以非常方便的「擴(kuò)展」新的配置文件格式

可以「混合使用」不同的配置文件格式

內(nèi)置多種「指令」,并可輕易的擴(kuò)展新的指令

現(xiàn)在就安裝
$ npm install confman --save
來(lái)幾個(gè)示例 不同的環(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);

啟動(dòng)應(yīng)用

$ NODE_ENV=prod node index.js 

通過(guò)指定 NODE_ENV 可以加載指定的「環(huán)境配置文件 config.prod.yaml」,并和「默認(rèn)配置 config.yaml」進(jìn)行合并,
如果有相同的配置,「環(huán)境配置會(huì)覆蓋默認(rè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í),多數(shù)情況你不需要這么做,如果確實(shí)有需要,你可這樣編寫(xiě)一個(gè)自定義 loader

module.exports = {
  extname: ".xxx",
  load: function (configPath) {
    //...
    return configs;
  }
};

注冊(cè)自定義 loader

confman.loaders.push(require("your-loader-path"));
新的擴(kuò)展名

方式一,映射到一個(gè)已經(jīng)添加的 loader

confman.loaders.push({
  extname: ".xxx",
  loader: ".yaml"
});

方式二,直接映射到一個(gè)未添加的自定義 loader

confman.loaders.push({
  extname: ".xxx",
  loader: require("your-loader-path")
});
內(nèi)置的指令

如上邊用到的 $require,Confman 允許使用指令完成某些配置,內(nèi)置的指令包括:

$require 引用指令,用于引用其它配置文件,參數(shù)為相對(duì)于當(dāng)前文件的相對(duì)路徑或絕對(duì)路徑

$calc 計(jì)算指令,用于計(jì)算一個(gè)表達(dá)式,如 $calc root.baseUrl+"/xxx" (表達(dá)式中可用變量有 root:根對(duì)象,parent:父對(duì)象,self:當(dāng)前對(duì)象)

$read 讀取指令,用于讀取一個(gè)文本文件,參數(shù)為相對(duì)于當(dāng)前文件的相對(duì)路徑或絕對(duì)路徑

示例 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,
通過(guò) Confman.load("./example") 加載 example 的結(jié)果為:

{
  "name": "example",
  "test1": { "name": "test1" },
  "test2": "my name is test2",
  "test3": "example:test3"
}
自定義指令

編寫(xiě)一個(gè)自定義指令的代碼如下:

module.exports = {
  name: "xxx",
  exec: function(context){
    //context.fromPath 來(lái)自哪個(gè)配置文件
    //context.parser 當(dāng)前 Confman 實(shí)例
    //context.root 根對(duì)象
    //context.parent 父對(duì)象
    //context.self 當(dāng)前對(duì)象
    //context.name 配置屬性名
    //context.value 指令后的值
    return {} //返回值為指令執(zhí)行結(jié)果
  }
};

注冊(cè)自定義指令

confman.directives.push(require("your_directive_path"));
其它的問(wèn)題

新的建議或 Bug 請(qǐng)使用 isseus 反饋

貢獻(xiàn)代碼,請(qǐng)使用 Pull Request,需一并提交相關(guān)測(cè)試并且不能低于現(xiàn)有覆蓋率

現(xiàn)在或?qū)?lái)有可能會(huì)用到?那你應(yīng)該去加個(gè) Star
GitHub : https://github.com/Houfeng/co...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/86440.html

相關(guān)文章

  • webpack配置

    摘要:配置無(wú)入口的在輸出時(shí)的文件名稱。配置發(fā)布到線上資源的前綴,為類型。則是用于配置這個(gè)異步插入的標(biāo)簽的值。配置以何種方式導(dǎo)出庫(kù)。是字符串的枚舉類型,支持以下配置。在為時(shí),配置將沒(méi)有意義。是可選配置項(xiàng),類型需要是其中一個(gè)。 webpack配置 查看所有文檔頁(yè)面:全棧開(kāi)發(fā),獲取更多信息。原文鏈接:第2章 配置,原文廣告模態(tài)框遮擋,閱讀體驗(yàn)不好,所以整理成本文,方便查找。 配置 Webpack...

    Doyle 評(píng)論0 收藏0
  • webpack打包分析與性能優(yōu)化

    摘要:打包分析與性能優(yōu)化背景在去年年末參與的一個(gè)項(xiàng)目中,項(xiàng)目技術(shù)棧使用,生產(chǎn)環(huán)境全量構(gòu)建將近三分鐘,項(xiàng)目業(yè)務(wù)模塊多達(dá)數(shù)百個(gè),項(xiàng)目依賴數(shù)千個(gè),并且該項(xiàng)目協(xié)同前后端開(kāi)發(fā)人員較多,提高構(gòu)建效率,成為了改善團(tuán)隊(duì)開(kāi)發(fā)效率的關(guān)鍵之一。 webpack打包分析與性能優(yōu)化 背景 在去年年末參與的一個(gè)項(xiàng)目中,項(xiàng)目技術(shù)棧使用react+es6+ant-design+webpack+babel,生產(chǎn)環(huán)境全量構(gòu)建將...

    joy968 評(píng)論0 收藏0
  • webpack4.x升級(jí)摘要

    摘要:以為例,編寫(xiě)來(lái)幫助我們完成重復(fù)的工作編譯壓縮我只要執(zhí)行一下就可以檢測(cè)到文件的變化,然后為你執(zhí)行一系列的自動(dòng)化操作,同樣的操作也發(fā)生在這些的預(yù)處理器上。的使用是針對(duì)第三方類庫(kù)使用各種模塊化寫(xiě)法以及語(yǔ)法。 showImg(https://segmentfault.com/img/bVbtZYK); 一:前端工程化的發(fā)展 很久以前,互聯(lián)網(wǎng)行業(yè)有個(gè)職位叫做 軟件開(kāi)發(fā)工程師 在那個(gè)時(shí)代,大家可能...

    levinit 評(píng)論0 收藏0
  • Webpack坑位之輸出

    摘要:之輸出的最后就是為了得到打包結(jié)果。在這里可以看到很多相似,但是有不同含義的名次,如和,和,那他們有什么區(qū)別呢而這里的又是什么意思呢將多個(gè)模塊打包之后的代碼集合稱為。在這樣打包的話,會(huì)報(bào)錯(cuò)。所以就想搞明白這兩個(gè)的區(qū)別到底是什么。webpack之輸出 webpack的最后就是為了得到打包結(jié)果。 那這是一個(gè)怎么樣的過(guò)程,不同的配置,會(huì)有什么樣的結(jié)果呢? 本文的原文在我的博客中:github.com...

    miqt 評(píng)論0 收藏0
  • node模塊加載層級(jí)優(yōu)化

    摘要:環(huán)境變量法通過(guò)上一節(jié)的源碼分析,我們知道了的作用,那么如何使用或者優(yōu)雅的使用來(lái)解決依賴加載問(wèn)題呢嘗試一最為直接的是,修改系統(tǒng)的環(huán)境變量。 模塊加載痛點(diǎn) 大家也或多或少的了解node模塊的加載機(jī)制,最為粗淺的表述就是依次從當(dāng)前目錄向上級(jí)查詢node_modules目錄,若發(fā)現(xiàn)依賴則加載。但是隨著應(yīng)用規(guī)模的加大,目錄層級(jí)越來(lái)越深,若是在某個(gè)模塊中想要通過(guò)require方式以依賴名稱或相對(duì)路...

    eccozhou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<