/js-ipfs

IPFS implementation in JavaScript

Primary LanguageJavaScriptOtherNOASSERTION

IPFS in JavaScript logo

The JavaScript implementation of the IPFS protocol


Upgrading from <=0.40 to 0.48? See the release notes for the list of API changes and the migration guide.

We've come a long way, but this project is still in Alpha, lots of development is happening, APIs might change, beware of 🐉..

Getting started

Lead Maintainer

Alex Potsides

Table of Contents

Getting Started

Install as a CLI user

Installing ipfs globally will give you the jsipfs command which you can use to start a daemon running:

$ npm install -g ipfs
$ jsipfs daemon
Initializing IPFS daemon...
js-ipfs version: x.x.x
System version: x64/darwin
Node.js version: x.x.x
Swarm listening on /ip4/127.0
.... more output

You can then add a file:

$ jsipfs add ./hello-world.txt
added QmXXY5ZxbtuYj6DnfApLiGstzPN7fvSyigrRee3hDWPCaf hello-world.txt

Install as an application developer

If you do not need to run a command line daemon, use the ipfs-core package - it has all the features of ipfs but in a lighter package:

$ npm install ipfs-core

Then start a node in your app:

const IPFS = require('ipfs-core')

const ipfs = await IPFS.create()
const { cid } = await ipfs.add('Hello world')
console.info(cid)
// QmXXY5ZxbtuYj6DnfApLiGstzPN7fvSyigrRee3hDWPCaf

Documentation

Structure

This project is broken into several modules, their purposes are:

Packages

List of the main packages that make up the IPFS ecosystem.

Package Version Deps CI/Travis Coverage Lead Maintainer
Files
ipfs-unixfs npm Deps Travis CI codecov Alex Potsides
Repo
ipfs-repo npm Deps Travis CI codecov Alex Potsides
ipfs-repo-migrations npm Deps Travis CI codecov N/A
Exchange
ipfs-bitswap npm Deps Travis CI codecov Dirk McCormick
IPNS
ipns npm Deps Travis CI codecov Vasco Santos
Generics/Utils
ipfs-utils npm Deps Travis CI codecov Hugo Dias
ipfs-http-client npm Deps Travis CI codecov Alex Potsides
ipfs-http-response npm Deps Travis CI codecov Vasco Santos
ipfsd-ctl npm Deps Travis CI codecov Hugo Dias
is-ipfs npm Deps Travis CI codecov Marcin Rataj
aegir npm Deps Travis CI codecov Hugo Dias
libp2p
libp2p npm Deps Travis CI codecov Jacob Heun
peer-id npm Deps Travis CI codecov Vasco Santos
libp2p-crypto npm Deps Travis CI codecov Jacob Heun
libp2p-floodsub npm Deps Travis CI codecov Vasco Santos
libp2p-gossipsub npm Deps Travis CI codecov Cayman Nava
libp2p-kad-dht npm Deps Travis CI codecov Vasco Santos
libp2p-mdns npm Deps Travis CI codecov Jacob Heun
libp2p-bootstrap npm Deps Travis CI codecov Vasco Santos
@chainsafe/libp2p-noise npm Deps Travis CI codecov N/A
libp2p-tcp npm Deps Travis CI codecov Jacob Heun
libp2p-webrtc-star npm Deps Travis CI codecov Vasco Santos
libp2p-websockets npm Deps Travis CI codecov Jacob Heun
libp2p-mplex npm Deps Travis CI codecov Vasco Santos
libp2p-delegated-content-routing npm Deps Travis CI codecov Jacob Heun
libp2p-delegated-peer-routing npm Deps Travis CI codecov Jacob Heun
IPLD
@ipld/dag-pb npm Deps Travis CI codecov N/A
@ipld/dag-cbor npm Deps Travis CI codecov N/A
Multiformats
multiformats npm Deps Travis CI codecov N/A
mafmt npm Deps Travis CI codecov Vasco Santos
multiaddr npm Deps Travis CI codecov Jacob Heun

This table is generated using the module package-table with package-table --data=package-list.json.

Want to hack on IPFS?

The IPFS implementation in JavaScript needs your help! There are a few things you can do right now to help out:

Read the Code of Conduct and JavaScript Contributing Guidelines.

  • Check out existing issues The issue list has many that are marked as 'help wanted' or 'difficulty:easy' which make great starting points for development, many of which can be tackled with no prior IPFS knowledge
  • Look at the IPFS Roadmap This are the high priority items being worked on right now
  • Perform code reviews More eyes will help a. speed the project along b. ensure quality, and c. reduce possible future bugs.
  • Add tests. There can never be enough tests.
  • Join the Weekly Core Implementations Call it's where everyone discusses what's going on with IPFS and what's next

License

FOSSA Status