How to download NPM package published to GitHub packages registry as a zip?

2 min read 05-10-2024
How to download NPM package published to GitHub packages registry as a zip?


Downloading an NPM Package from GitHub Packages Registry as a Zip

Want to get your hands on the source code of an NPM package published to the GitHub Packages Registry? This can be handy for offline development, debugging, or simply exploring the inner workings of a package. You can't directly download a package as a zip from the GitHub Packages Registry, but here's how to accomplish this:

Understanding the Problem

The GitHub Packages Registry primarily functions as a centralized location for storing and distributing NPM packages. While it allows you to install and use packages in your projects, it doesn't offer a direct download option for the entire package as a zip archive.

Scenario and Code

Let's assume you want to download the source code of the "my-awesome-package" published on GitHub Packages. You can use the npm pack command to create a tarball (archive) of the package, but you'll need to have the package installed locally first.

# Install the package
npm install my-awesome-package

# Package the installed package into a tarball
npm pack my-awesome-package

# The resulting tarball will be named "my-awesome-package-1.0.0.tgz" (version may vary)

Alternative Approach

The npm pack approach only works if you have the package installed locally. An alternative is to use the gh command-line tool, which interacts with GitHub directly. This allows you to download the package's repository as a zip archive.

Steps using gh:

  1. Install gh: If you don't have it already, install the gh CLI tool:

    brew install gh # For macOS
    # Or similar commands for other operating systems
    
  2. Login to GitHub: Authenticate with your GitHub account using gh auth login.

  3. Download the repository: Use the gh repo download command to download the entire repository as a zip archive. Replace <owner> and <repo> with the package's GitHub repository details.

    gh repo download <owner>/<repo>
    

Additional Notes:

  • Package Versions: The gh repo download command downloads the entire repository, which may contain multiple versions of the package.
  • Source Code Only: This method provides access to the package's source code, including any dependencies within the repository. It doesn't include any compiled binaries or additional artifacts that might be distributed as part of the published package.

Conclusion

While the GitHub Packages Registry doesn't directly offer zip downloads, you can leverage tools like npm pack or gh to achieve this. Remember, these methods provide access to the repository's source code, which might not include all elements distributed in a package.

References: