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-ipfs
or
yarn add luna-ipfs
or similar for pnpm
, bun
, etc.
import IPFSUploader from "luna-ipfs";
const uploader = new IPFSUploader();
await uploader.init(); // Initialize Luna
Uses 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 i
npm run build
Update file and folder path on test file before proceeding:
npm run test:dev
make release level=patch
with debug
make release level=patch DEBUG=true