Fetch an npm module as a tarball

Usage no npm install needed!

<script type="module">
  import npmFetch from '';



Fetch npm modules. This is a work in progress.

Build Status Dependency Status NPM version


var fetch = require('npm-fetch');
fetch('npm-fetch@0.0.1', __dirname + '/npm-fetch.tgz', function (err) {
  if (err) throw err;


fetch(name, spec, dest, options, cb)


Fetch the package as a tarball to destination using the appropriate method.

  • name the name of the package as a string
  • spec a string which can be:
    • a version, version range or tag if the module is in the npm repository
    • a url with https or http as the scheme, where the module is hosted somewhere as a tarball
    • a git url, where the module will be cloned as a git repository
    • a GitHub specifier of the form username/reponame#tag-name where #tag-name is optional and defaults to #master
    • a path to a local file or folder

npm.version(name, version, options)

Download package at exact version and return a stream.

npm.range(name, versionRange, options)

Download the max satisfying version of a package

npm.tag(name, tag, options)

Download the package name at tag and return a stream

github(name, 'user/repo#tag', options)

Returns a stream for the GitHub repo as a tarball at the given tag (defaults to master)


fetch.github('npm-fetch', 'ForbesLindesay/npm-fetch', {})

git(name, url, options)

Not yet implemented

tarball(name, url, options)

Get a stream for a tarball (handling redirects and retries).

local.dir(name, path, options)

Package up the directory at path and return a stream for the tarball.

local.file(name, path, options)

Just create a read stream for path