npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ipfs-npm-republish

v1.1.5

Published

Republish your node project's dependencies to IPFS as a micro-registry

Downloads

37

Readme

ipfs-npm-republish

Republish your node project's dependencies to IPFS as a micro-registry

Install

npm install -g ipfs-npm-republish

You also need IPFS running, I recommend installing IPFS Desktop.

Usage

To republish all the dependencies for your application, run the following command within folder with a package-lock.json present:

ipfs-npm-republish

To republish a specific module from npm along with it's dependencies to ipfs, run the following command passing the name of the package:

ipfs-npm-republish react

adding a version string also works:

ipfs-npm-republish [email protected]

You can also publish a new package directly to IPFS without needing to first publish to npmjs.org, run the following command within folder with a package.json present:

ipfs-npm-republish publish

To publish a second release to an existing package that was published to IPFS, you can pass the hash of the previous version of the registry:

ipfs-npm-republish publish bafybeiahqsziz6mxofxlvx3baqcrihjicxoh27mcg4eukwybvb2u7whuzm

You can also merge two micro-registries together:

ipfs-npm-republish merge bafybeib7yv2z6bgmzphqjuexdb6smfah6pitmah4hzqb7rw7yjzmwocb6e bafybeic3ldukh6jfg2wq4fhrigtvgnf5lml6wo5qdkmsdlr3ieo63qczyu

How it works

1. List dependencies for current directory from package-lock.json
2. Calculate list of packages to be republished
3. create an folder to act as ROOT
4. For each package
  1. Fetch packuments for each package and write to ROOT
  2. For each depended upon version:
    1. download the tarball to ROOT
    2. ipfs add tarball
    3. rewrite the dist.tarball url to a local gateway url with tarball hash
5. ipfs add -r ROOT
7. set per-project npm config to use new micro-registry
8. output command to update registry to point to ipfs ROOT hash

TODOS

  • Publish ROOT to ipns (optional due to speed issues)
  • Don't upload private modules
  • support git dependencies
  • check that IPFS is running locally
  • check that you have a package-lock.json
  • tests!

License

MIT