Download source from npm without installing it

81,769

Solution 1

You can use npm view [package name] dist.tarball which will return the URL of the compressed package file.

Here's an example using wget to download the tarball:

wget $(npm view lodash dist.tarball)

Solution 2

A simpler way to do this is npm pack <package_name>. This will retrieve the tarball from the registry, place it in your npm cache, and put a copy in the current working directory. See https://docs.npmjs.com/cli/pack

Solution 3

If you haven't installed npm, with the current public API, you can also access the information about a package in the npm registry from the URL https://registry.npmjs.org/<package-name>/.

Then you can navigate the JSON at versions > (version number) > dist > tarball to get the URL of the code archive and download it.

Solution 4

npm pack XXX is the quickest to type and it'll download an archive.

Alternatively:

npm v XXX dist.tarball | xargs curl | tar -xz

this command will also:

  • Download the package with progress bar
  • Extracts into a folder called package

Solution 5

On linux I usually download the tarball of a package like this:

wget `npm v [package-name] dist.tarball`

Notice the backticks ``, on stackoverflow I cannot see them clearly.

"v" is just another alias for view:

https://docs.npmjs.com/cli/view

Share:
81,769
AURIGADL
Author by

AURIGADL

Updated on February 23, 2022

Comments

  • AURIGADL
    AURIGADL about 2 years

    How can I download the source code of a package from npm without actually installing it (i.e. without using npm install thepackage)?

  • Ernst Robert
    Ernst Robert about 8 years
    This command gives you the direct link to the tarball. registry.npmjs.org/packagename/-/packagename-version.tgz
  • revelt
    revelt over 4 years
    npm pack <package's name> is the shortest current way
  • friederbluemle
    friederbluemle over 4 years
    Perfect. Also: npm pack --dry-run <package_name> will produce the same exact output, without placing the tgz file in the current directory.
  • Oliver Salzburg
    Oliver Salzburg almost 4 years
    Downvoted because this doesn't use npm authentication information and results in 401 errors for private packages.
  • defvol
    defvol about 3 years
    Additionally, if you want to keep the same filename as the registry you could skip the last pipe as in: npm v XXX dist.tarball | xargs curl -O. In this case, curl -O will keep the filename from the npm registry, and since the file is already a tar.gz there's no need to pipe it again through the tar command.
  • Codebling
    Codebling almost 3 years
    Caret-ish versions like jquery@2 result in multiple URLs being returned