Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/ipfs/npm-kubo
- Owner: ipfs
- License: mit
- Created: 2015-04-12T07:49:01.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2024-10-16T18:48:50.000Z (21 days ago)
- Last Synced: 2024-10-29T12:11:37.493Z (8 days ago)
- Topics: ipfs, npm
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/kubo
- Size: 109 KB
- Stars: 42
- Watchers: 25
- Forks: 30
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Kubo: IPFS Implementation in GO
Install Kubo (previously known as "go-ipfs") from NPM
## 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/kuboOpen 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)