Make your own badges here! (Quick guide: https://img.shields.io/badge/left-right-f39f37.svg
.)
npm install gh-badges
var badge = require('gh-badges');
// Optional step, to have accurate text width computation.
badge.loadFont('/path/to/Verdana.ttf', function(err) {
badge({ text: ["build", "passed"], colorscheme: "green", template: "flat" },
function(svg, err) {
// svg is a String of your badge.
});
});
npm install -g gh-badges
badge build passed :green .png > mybadge.png
# Stored a PNG version of your badge on disk.
To run the server you will need the following executables on your Path:
On an OS X machine, Homebrew is a good package manager that will allow you to install that.
On Ubuntu / Debian: sudo apt-get install phantomjs
.
git clone https://github.com/badges/shields.git
cd shields
npm install # You may need sudo for this.
sudo node server
The server uses port 80 by default, which requires sudo
permissions.
There are two ways to provide an alternate port:
PORT=8080 node server
node server 8080
The root gets redirected to http://shields.io.
For testing purposes, you can go to http://localhost/try.html
.
You should modify that file. The "real" root, http://localhost/index.html
,
gets generated from the try.html
file.
The format is the following:
{
/* Textual information shown, in order. */
"text": [ "build", "passed" ],
"format": "svg", // Also supports "json".
"colorscheme": "green",
/* … Or… */
"colorA": "#555",
"colorB": "#4c1",
/* See template/ for a list of available templates.
Each offers a different visual design. */
"template": "flat"
}
If you want to add a colorscheme, head to colorscheme.json
. Each scheme has a
name and a CSS/SVG color for the color used in the first box (for the first
piece of text, field colorA
) and for the one used in the second box (field
colorB
).
"green": {
"colorB": "#4c1"
}
Both colorA
and colorB
have default values. Usually, the first box uses the
same dark grey, so you can rely on that default value by not providing a
"colorA"
field (such as above).
You can also use the "colorA"
and "colorB"
fields directly in the badges if
you don't want to make a color scheme for it. In that case, remove the
"colorscheme"
field altogether.
Once you have installed the Heroku Toolbelt:
heroku login
heroku create your-app-name
heroku config:set BUILDPACK_URL=https://github.com/mojodna/heroku-buildpack-multi.git#build-env
cp /path/to/Verdana.ttf .
make deploy
heroku open
You can build and run the server locally using Docker. First build an image:
$ docker build -t shields ./
Sending build context to Docker daemon 3.923 MB
Step 0 : FROM node:0.12.7-onbuild
…
Removing intermediate container c4678889953f
Successfully built 4471b442c220
Then run the container:
$ docker run --rm -p 8080:80 shields
> [email protected] start /usr/src/app
> node server.js
http://[::1]:80/try.html
Assuming Docker is running locally, you should be able to get to the application at http://localhost:8080/try.html. If you run Docker in a virtual machine (such as boot2docker or Docker Machine) then you will need to replace localhost
with the actual IP address of that virtual machine.
- DNS round-robin between https://vps197850.ovh.net/try.html and https://vps244529.ovh.net/try.html.
- Self-signed TLS certificates, but
img.shields.io
is behind CloudFlare, which provides signed certificates. - Using node v0.12.7 because later versions, combined with node-canvas, give inaccurate badge measurements.
- Using forever (the node monitor) to automatically restart the server when it crashes.
See https://github.com/badges/ServerScript for helper admin scripts.
See h5bp/lazyweb-requests#150 for a story of the project's inception.
This is also available as a gem badgerbadgerbadger
, code here.
All work here is licensed CC0.