Enable npm version for specific tag (#926)

* Enable npm version for specific tag
* Show tag in badge
This commit is contained in:
Casey Webb 2017-04-02 00:01:46 -05:00 committed by Paul Melnikow
parent 522e09f509
commit d462111370
2 changed files with 25 additions and 6 deletions

View File

@ -1629,12 +1629,23 @@ cache(function (data, match, sendBadge, request) {
}));
// npm version integration.
camp.route(/^\/npm\/v\/(.*)\.(svg|png|gif|jpg|json)$/,
camp.route(/^\/npm\/v\/(@[^\/]*)?\/?([^\/]*)\/?([^\/]*)\.(svg|png|gif|jpg|json)$/,
cache(function(data, match, sendBadge, request) {
var repo = encodeURIComponent(match[1]); // eg, "express" or "@user/express"
var format = match[2];
var apiUrl = 'https://registry.npmjs.org/-/package/' + repo + '/dist-tags';
var badgeData = getBadgeData('npm', data);
var scope = match[1]; // "@user"
var repo = match[2]; // "express"
var tag = match[3]; // "next"
var format = match[4]; // "svg"
var pkg = encodeURIComponent(scope
? scope + '/' + repo
: repo);
var name = 'npm';
if (tag) {
name += '@' + tag;
} else {
tag = 'latest';
}
var apiUrl = 'https://registry.npmjs.org/-/package/' + pkg + '/dist-tags';
var badgeData = getBadgeData(name, data);
// Using the Accept header because of this bug:
// <https://github.com/npm/npmjs.org/issues/163>
request(apiUrl, { headers: { 'Accept': '*/*' } }, function(err, res, buffer) {
@ -1645,7 +1656,7 @@ cache(function(data, match, sendBadge, request) {
}
try {
var data = JSON.parse(buffer);
var version = data.latest;
var version = data[tag];
var vdata = versionColor(version);
badgeData.text[1] = vdata.version;
badgeData.colorscheme = vdata.color;

View File

@ -427,6 +427,14 @@ Pixel-perfect &nbsp; Retina-ready &nbsp; Fast &nbsp; Consistent &nbsp; Hackable
<td><img src='/npm/v/@cycle/core.svg' alt=''/></td>
<td><code>https://img.shields.io/npm/v/@cycle/core.svg</code></td>
</tr>
<tr><th data-keywords='node'> npm (tag): </th>
<td><img src='/npm/v/npm/next.svg' alt=''/></td>
<td><code>https://img.shields.io/npm/v/npm/next.svg</code></td>
</tr>
<tr><th data-keywords='node'> npm (scoped with tag): </th>
<td><img src='/npm/v/@cycle/core/canary.svg' alt=''/></td>
<td><code>https://img.shields.io/npm/v/@cycle/core/canary.svg</code></td>
</tr>
<tr><th> node: </th>
<td><img src='/node/v/gh-badges.svg' alt=''/></td>
<td><code>https://img.shields.io/node/v/gh-badges.svg</code></td>