NPM酷庫,天天兩分鐘,瞭解一個流行NPM庫。git
今天咱們要了解的庫是debug,一個專門用來控制輸出調試日誌的庫。github
一般,咱們直接使用 console.log
輸出調試日誌,使用console
對象直接將日誌輸出到控制檯,因爲Node.js和瀏覽器環境都默認支持console
對象,因此,這種方式是最直接和最簡潔的。瀏覽器
可是,隨着項目規模增長,console
控制檯輸出的日誌就會堆積不少而不可讀。另外一方面,咱們須要在開發調試環境纔打開日誌,而線上生產環境就不須要輸出過多的日誌。使用 console
對象控制日誌輸出,咱們會天然而然地以「加註釋」、「去註釋」的方式來控制日誌的輸出。這樣很笨。session
debug庫就是一款專門控制日誌輸出的庫,可以完美解決咱們的上述需求。dom
首先,debug庫會判斷DEBUG
環境變量,因此咱們不須要修改代碼,只調整一下程序運行環境就能夠控制日誌是否輸出。另外,debug庫不是簡單地布爾判斷DEBUG
環境變量,而是會對DEBUG
環境變量進行解析,容許咱們選擇性地控制輸出哪些模塊的日誌,有效地解決了調試程序時候控制檯日誌堆積問題,由於咱們能夠控制debug,讓其只輸出咱們關心的程序模塊的日誌。ui
下面就是一段使用了debug庫的程序示例。spa
const Debugger = require('debug'); const a = Debugger('worker:a'); const b = Debugger('worker:b'); function work() { a('doing lots of uninteresting work'); setTimeout(work, Math.random() * 1000); } work(); function workb() { b('doing some work'); setTimeout(workb, Math.random() * 2000); } workb();
若是設置環境變量DEBUG爲 worker:*
那麼就會輸出全部的日誌:debug
若是設置環境變量DEBUG爲 worker:a
那麼就只會輸出worker:a
的日誌:調試
從上述例子中,得知DEBUG
環境變量的設置支持通配符*
。假設,咱們的程序中存在以下調試器 "connect:bodyParser"、"connect:compress"、"connect:session",咱們能夠將DEBUG設置爲DEBUG=connect:bodyParser,connect:compress,connect:session
,或者簡單地使用通配符 DEBUG=connect:*
,若是咱們須要調試非connect相關的其餘信息,可使用 -
符號,「減去」 connect,DEBUG=*,-connect:*
。rest
在瀏覽器端,debug也可以很好地運行,不過在瀏覽器端開啓調試,並非使用DEBUG
環境變量,由於瀏覽器端不支持process.env.DEBUG
訪問。在瀏覽器端,使用localStorage
對象控制debug:
localStorage.debug = 'worker:*'
參考: https://github.com/visionmedi...
天天瞭解一個NPM庫,一年後成爲Node.js高手