Need help with js-ipfs?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

ipfs
4.8K Stars 909 Forks Other 5.9K Commits 315 Opened issues

Description

IPFS implementation in JavaScript

Services available

!
?

Need anything else?

Contributors list

No Data

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

  • Read the docs
  • Look into the examples to learn how to spawn an IPFS node in Node.js and in the Browser
  • Consult the Core API docs to see what you can do with an IPFS node
  • Visit https://dweb-primer.ipfs.io to learn about IPFS and the concepts that underpin it
  • Head over to https://proto.school to take interactive tutorials that cover core IPFS APIs
  • Check out https://docs.ipfs.io for tips, how-tos and more
  • See https://blog.ipfs.io for news and more
  • Need help? Please ask 'How do I?' questions on https://discuss.ipfs.io

Lead Maintainer <!-- omit in toc -->

Alex Potsides

Table of Contents <!-- omit in toc -->

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-exporter
| npm | Deps | Travis CI | codecov | Alex Potsides | |
ipfs-unixfs-importer
| npm | Deps | Travis CI | codecov | Alex Potsides | |
ipfs-unixfs
| npm | Deps | Travis CI | codecov | Alex Potsides | | Repo | |
ipfs-repo
| npm | Deps | Travis CI | codecov | Alex Potsides | | Exchange | |
ipfs-block-service
| npm | Deps | Travis CI | codecov | Volker Mische | |
ipfs-block
| npm | Deps | Travis CI | codecov | Volker Mische | |
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 | |
ipfs-repo-migrations
| npm | Deps | Travis CI | codecov | N/A | | 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 | |
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
| npm | Deps | Travis CI | codecov | Volker Mische | |
ipld-dag-pb
| npm | Deps | Travis CI | codecov | Volker Mische | |
ipld-dag-cbor
| npm | Deps | Travis CI | codecov | Volker Mische | | Multiformats | |
multihashing
| npm | Deps | Travis CI | codecov | Hugo Dias | |
mafmt
| npm | Deps | Travis CI | codecov | Vasco Santos | |
multiaddr
| npm | Deps | Travis CI | codecov | Jacob Heun | |
multihashes
| npm | Deps | Travis CI | codecov | David Dias |

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.