ipfs-npm-republish v1.1.5
ipfs-npm-republish
Republish your node project's dependencies to IPFS as a micro-registry
Install
npm install -g ipfs-npm-republishYou 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-republishTo 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 reactadding a version string also works:
ipfs-npm-republish react@16.8.6You 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 publishTo 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 bafybeiahqsziz6mxofxlvx3baqcrihjicxoh27mcg4eukwybvb2u7whuzmYou can also merge two micro-registries together:
ipfs-npm-republish merge bafybeib7yv2z6bgmzphqjuexdb6smfah6pitmah4hzqb7rw7yjzmwocb6e bafybeic3ldukh6jfg2wq4fhrigtvgnf5lml6wo5qdkmsdlr3ieo63qczyuHow 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 hashTODOS
- 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