細心的讀者朋友一定在很多Github的Repo,npm的package頁面看到過諸如 的徽章。這些徽章是干什麼用的?
大家看到上文中我引用的Badge的左側,是Downloads
,Build
,Dependency
之類的,不難猜出,這些Badge是用於一些信息的統計,然後以圖片的形式展示出來。比如我的一個小項目Delta是用js寫的,我使用了Travis CI來進行持續的編譯和測試。每次我checkin了新的代碼,Travis CI就會對最新的代碼進行build,然後把build的結果,畫成一張矢量圖,放在https://travis-ci.org/rebornix/delta.svg
下。於是同學們就能及時地從我的項目主頁看到該項目的最近build情況,如果掛了,就可以肆意地爆我。
其實這就是個把numbers變成圖片的小玩意。
為了讓.NET世界的朋友也和前端朋友們一樣酷,我們決定在Visual Studio Gallery中也提供這樣的服務。很快我寫了一個版本,用來生成PNG。效果還不錯,但是PNG唯一的缺點就是無法scale,如果能生成矢量圖會更好。由於.NET在繪制矢量圖上天生殘疾,我嘗試著找找有沒有現成的方案。於是我發現了Sheild.io.
Shield提供了一套繪制badge的方案,並且開源了nodejs、php、go等語言的實現方式,甚至他們提供了一個服務Shield.io方便大家使用。這幾乎是完美的。
原因也挺簡單的,shield並不可能像Azure,AWS那樣提供SLA(我們也不該要求他們提供)。我們要盡可能地為我們的網站減少這樣的external dependency。既然他們開源了,我干脆就寫了一個.NET版本,通過Nuget管理Assembly,然後把這個服務run在我們自己的機器上。我給它取了個很俗的名字,叫DotBadge,大家可以前去Github圍觀。
大家可以通過nuget下載dll來引用,另外為了大家更好地玩耍已經體驗,我寫了個小小的命令行工具。
下載
打開命令行,到DotBadge的目錄下,執行 DotBadge.exe --help
.
DotBadge.exe -sb "Downloads" -st "1000" -c "Green" -sl 0
DotBadge.exe -sb "Build" -st "fail" -c "Red" -sl 0
DotBadge.exe -sbhttps://github.com/rebornix/DotBadge/edit/master/Readme.md# "Star" -st "234" -c "#ddf" -sl 1
在Nuget的 Package Manager Console裡面運行
PM> Install-Package DotBadge
或者使用Nuget的UI tool搜索下載。
using DotBadge; using System.IO; namespace Badge { class Program { static void Main(string[] args) { var bp = new BadgePainter(); File.WriteAllText(@"C:\Users\peng\Desktop\nuget.svg", bp.DrawSVG("Badge", ".Net", ColorScheme.Red, Style.Flat)); } } }