Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ipfs/npm-kubo

Install Kubo (go-ipfs) from NPM
https://github.com/ipfs/npm-kubo

ipfs npm

Last synced: about 2 hours ago
JSON representation

Install Kubo (go-ipfs) from NPM

Awesome Lists containing this project

README

        




Kubo logo


Kubo: IPFS Implementation in GO




Install Kubo (previously known as "go-ipfs") from NPM


Official Part of IPFS Project
Discourse Forum
Matrix
ci
npm version
npm downloads

## Table of Contents

- [Install](#install)
- [Usage](#usage)
- [Development](#development)
- [Publish a new version](#publish-a-new-version)
- [Contribute](#contribute)
- [License](#license)

## Install

Install the latest [Kubo](https://github.com/ipfs/kubo/) (go-ipfs) binary:

```sh
# Install globally
> npm install -g kubo
> ipfs version
ipfs version v0.23.0

# Install locally
> npm install kubo
> ./node_modules/.bin/ipfs
ipfs version v0.23.0
```

## Usage

This module downloads Kubo (go-ipfs) binaries from https://dist.ipfs.tech into your project.

It will download the kubo version that matches the npm version of this module. So depending on `[email protected]` will install `kubo v0.23.0` for your current system architecture, in to your project at `node_modules/kubo/kubo/ipfs` and additional symlink to it at `node_modules/kubo/bin/ipfs`.

On Windows, `ipfs.exe` file is used, and if the symlink can't be created under a regular user, a copy of `ipfs.exe` is created instead.

After downloading you can find out the path of the installed binary by calling the `path` function exported by this module:

```javascript
import { path } from 'kubo'

console.info('kubo is installed at', path())
```

An error will be thrown if the path to the binary cannot be resolved.

### Caching

Downloaded archives are placed in OS-specific cache directory which can be customized by setting `NPM_KUBO_CACHE` in env.

### Overriding with `KUBO_BINARY` env

If the `KUBO_BINARY` env variable is set at runtime this will override the path of the binary used.

This must point to the file, not the directory containing the file.

## Development

**Warning**: the file `bin/ipfs` is a placeholder, when downloading stuff, it gets replaced. so if you run `node install.js` it will then be dirty in the git repo. **Do not commit this file**, as then you would be commiting a big binary and publishing it to npm. A pre-commit hook exists and should protect against this, but better safe than sorry.

### Publish a new version

You should be able to just run `./publish.sh` for example:

```sh
> ./publish.sh
usage ./publish.sh
publish a version of kubo to npm

> ./publish.sh 0.3.11
```

This will:

- check the version is indeed a tag in https://github.com/ipfs/kubo
- check the size of `bin/ipfs` is right (must be the checked in file)
- update the version numbers in `package.json` and `README.md`
- `git commit` the changes
- push to https://github.com/ipfs/npm-kubo
- publish to `kubo@$version` to https://npmjs.com/package/kubo

Open an issue in the repo if you run into trouble.

### Publish a new version of this module with exact same kubo version

If some problem happens, and you need to publish a new version of this module targetting _the same_ kubo version, then please follow this convention:

1. **Clean up bad stuff:** unpublish all modules with this exact same ``
2. **Add a "hacky" version suffix:** use version: `-hacky`
3. **Publish version:** publish the module. Since it's the only one with the kubo version, then it should be installed.

> Why do this?

Well, if you previously published npm module `[email protected]` and there was a problem, we now must publish a different version, but we want to keep the version number the same. so the strategy is to publish as `[email protected]`, and unpublish `[email protected]`.

> Why `-hacky`?

Because it is unlikely to be a legitimate kubo version, and we want to support kubo versions like `floodsub-1` etc.

> Do i have to say `-hacky` or can i just use `-`?

`-` won't work, as [link-ipfs.js](./link-ipfs.js) expects `-hacky`. If you want to
change the convention, go for it, and update this readme accordingly.

## Contribute

Feel free to join in. All welcome. Open an [issue](https://github.com/ipfs/npm-kubo/issues)!

This repository falls under the IPFS [Code of Conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md).

[![](https://cdn.rawgit.com/jbenet/contribute-ipfs-gif/master/img/contribute.gif)](https://github.com/ipfs/community/blob/master/contributing.md)

## License

[MIT](LICENSE)