Skip to content

Instantly share code, notes, and snippets.

@legodude17
Created July 28, 2016 03:07
Show Gist options
  • Save legodude17/ed99b064d64bd0db50a8bea6e2d02e10 to your computer and use it in GitHub Desktop.
Save legodude17/ed99b064d64bd0db50a8bea6e2d02e10 to your computer and use it in GitHub Desktop.
A setup for just fetching a package and unpacking.
var request = require('request');
var targz = require('tar.gz');
var semver = require('semver');
var JSONStream = require('JSONStream');
var concat = require('concat-stream');
var file = process.argv[2];
var dir = process.argv[3] || process.cwd();
function fetchUnpack(url, dir) {
request(url).pipe(targz().createWriteStream(dir));
}
function fetchMetaData(name, cb) {
request('https://registry.npmjs.org/' + name).pipe(JSONStream.parse()).pipe(concat(cb));
}
function getLatestVersion(d) {
var pkg = d[0];
var versions = pkg.versions;
var greatest = '0.0.0';
Object.keys(versions).forEach(function (v) {
greatest = semver.gt(greatest, v) ? greatest : v;
});
return greatest;
}
function getTarballUrl(name, cb) {
fetchMetaData(name, function (d) {
cb(d[0].versions[getLatestVersion(d)].dist.tarball)
});
}
getTarballUrl(file, function (url) {
fetchUnpack(url, dir);
});
{
"name": "fetch",
"version": "1.0.0",
"dependencies": {
"request": "*",
"JSONStream": "*",
"tar.gz": "*",
"semver": "*",
"concat-stream": "*"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment