A TypeScript SDK for uploading files & directories to IPFS using Helia.
- File Upload
- ✅ NodeJs (Backend)
- ✅ Browser (React, NextJs, etc.)
- ✅ Pinning via remote URL
- Folder Upload
- ✅ NodeJs (Backend)
- ✅ Pinning via remote URL
- Fetch File
- ✅ NodeJs (Backend)
- ✅ Browser (React, NextJs, etc.)
npm i luna-ipfsor
yarn add luna-ipfsor similar for pnpm, bun, etc.
import IPFSUploader from "luna-ipfs";
const uploader = new IPFSUploader();
await uploader.init(); // Initialize LunaUses default storage path "./ipfs-blocks" in /var/folders
const fileCid = await uploader.uploadFile("./example.txt");
console.log("File uploaded to IPFS:", fileCid);const fileInput = document.querySelector("input[type='file']");
fileInput.addEventListener("change", async (event) => {
const file = event.target.files[0];
const fileCid = await uploader.uploadFile(file);
console.log("File uploaded to IPFS:", fileCid);
});const folderCid = await uploader.uploadDirectory("./my-folder");
console.log("Folder uploaded to IPFS:", folderCid);const fileContent = await uploader.fetchFile("<CID>");
console.log("Fetched file content:", fileContent);Helia instance should be stopped when done using:
await uploader.stop();This will also cleanup the temp folder used. But your files are permanently saved in IPFS.
💡 Check for available public gateways.
npm inpm run buildUpdate file and folder path on test file before proceeding:
npm run test:devmake release level=patchwith debug
make release level=patch DEBUG=true