Files
xahau.js/CONTRIBUTING.md
Greg Weisbrod b90710ffa5 clean up docs
2021-11-08 18:19:45 -05:00

4.7 KiB

Contributing

Set up your dev environment

Requirements

We use Node v14 for development - that is the version that our linters require. You must also use npm v7. You can check your npm version with:

npm -v

If your npm version is too old, use this command to update it:

npm -g i npm@7

Set up

  1. Clone the repository
  2. cd into the repository
  3. Install dependencies with npm install

Build

npm run build

Run the linter

npm install
npm run build
npm run lint

Running Tests

For integration and browser tests, we use a rippled node in standalone mode to test xrpl.js code against. To set this up, you can either run rippled locally, or set up the Docker container natenichols/rippled-standalone:latest for this purpose. The latter will require you to install Docker.

Unit Tests

npm install
npm run build
npm test

Integration Tests

npm install
# sets up the rippled standalone Docker container - you can skip this step if you already have it set up
docker run -p 6006:6006 -it natenichols/rippled-standalone:latest
npm run build
npm run test:integration

Browser Tests

There are two ways to run browser tests.

One is in the browser - run npm run build:browserTests and open test/localIntegrationRunner.html in your browser.

The other is in the command line (this is what we use for CI) -

npm run build
# sets up the rippled standalone Docker container - you can skip this step if you already have it set up
docker run -p 6006:6006 -it natenichols/rippled-standalone:latest
npm run test:browser

Generate reference docs

You can see the complete reference documentation at xrpl.js docs. You can also generate them locally using typedoc:

npm run docgen

Adding and removing packages

xrpl.js uses lerna and npm's workspaces features to manage a monorepo. Adding and removing packages requires a slightly different process than normal as a result.

Adding or removing development dependencies

xrpl.js strives to use the same development dependencies in all packages. You may add and remove dev dependencies like normal:

### adding a new dependency
npm install --save-dev abbrev
### removing a dependency
npm uninstall --save-dev abbrev

Adding or removing runtime dependencies

You need to specify which package is changing using the -w flag:

### adding a new dependency to `xrpl`
npm install abbrev -w xrpl
### adding a new dependency to `ripple-keypairs`
npm install abbrev -w ripple-keypairs
### removing a dependency
npm uninstall abbrev -w xrpl

Release process

Editing the Code

  • Your changes should have unit and/or integration tests.
  • Your changes should pass the linter.
  • Your code should pass all the tests on Github (which check the linter, unit and integration tests on Node 12/14/16, and browser tests).
  • Open a PR against develop and ensure that all CI passes.
  • Get a full code review from one of the maintainers.
  • Merge your changes.

Release

  1. Ensure that all tests passed on the last CI that ran on develop.
  2. Open a PR to update the docs if docs were modified.
  3. Create a branch off develop that properly increments the version in package.json and ensures that HISTORY.md is updated appropriately. We follow Semantic Versioning.
  • Use shasum -a 256 build/* to get the SHA-256 checksums. Add these to HISTORY.md as well.
  1. Merge this branch into develop.
  2. If this is not a beta release: Merge develop into master (--ff-only) and push to github. This is important because we have docs telling developers to use master to get the latest release.
  3. Create a new Github release/tag off of this branch.
  4. Run npm publish --dry-run and make sure everything looks good.
  5. Publish the release to npm.
  • If this is a beta release, run npm publish --tag beta. This allows someone else to install this version of the package with npm install xrpl@beta.
  • If this is a stable release, run npm publish.
  • This will require entering npm login info.
  1. Send an email to xrpl-announce.

Mailing Lists

We have a low-traffic mailing list for announcements of new xrpl.js releases. (About 1 email every couple of weeks)

If you're using the XRP Ledger in production, you should run a rippled server and subscribe to the ripple-server mailing list as well.