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

資訊專欄INFORMATION COLUMN

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

venmos / 448人閱讀

摘要:一句話介紹是一個強大的配置文件加載器,無論你喜歡還是,都能滿足你的愿望,并且更加簡單更加強大。

一句話介紹

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

相關(guān)文章

  • webpack配置

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

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

    摘要:打包分析與性能優(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)建將...

    joy968 評論0 收藏0
  • webpack4.x升級摘要

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

    levinit 評論0 收藏0
  • Webpack坑位之輸出

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

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

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

    eccozhou 評論0 收藏0

發(fā)表評論

0條評論

venmos

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<