Files
2026-03-02 12:14:14 -08:00

2.2 KiB

Contributing to Chain 138 Snap

Thank you for your interest in contributing. This guide covers setup, testing, and publishing.

Prerequisites

  • Node.js 18.6.0 or later (LTS recommended)
  • pnpm (default) or Yarn — see PACKAGE_MANAGER.md

Setup

# Clone the repo (or your fork)
git clone https://github.com/bis-innovations/chain138-snap.git
cd chain138-snap

# Install dependencies (pnpm default)
pnpm install

# Optional: enable scripts for packages that need postinstall (e.g. sharp)
pnpm run allow-scripts

Development

  • Start dev server (Snap + companion site): pnpm run start — serves at http://localhost:8000
  • Build: pnpm run build — builds Snap and site
  • Lint: pnpm run lint — ESLint + Prettier (JSON/MD/YAML)
  • Lint fix: pnpm run lint:fix

Testing

  • Unit tests (Snap): pnpm run test — builds the Snap and runs Jest in packages/snap
  • E2E (Playwright): pnpm run test:e2e — runs Playwright against the companion site (first time: npx playwright install)

For full manual E2E (MetaMask Flask, all RPC methods), see TESTING_INSTRUCTIONS.md and E2E_PREPARATION.md.

Packages with scripts

Scripts are disabled by default (LavaMoat). If you need to run install scripts (e.g. for sharp or gatsby):

pnpm run allow-scripts

Then enable the package in the lavamoat.allowScripts section of the root package.json if required.

Submitting changes

  1. Create a branch, make your changes, and run pnpm run lint and pnpm run test.
  2. Open a pull request against main.
  3. Ensure CI passes (build, lint, tests, and any security workflows).

Publishing (maintainers)

  • Push to GitHub: See PUSH_AND_PUBLISH.md (subtree push from parent repo if applicable).
  • Publish to npm: From this repo root, pnpm run publish:snap (requires NPM_ACCESS_TOKEN in .env for 2FA bypass; see .env.example).
  • Allowlist: After publishing a new version, submit an update via the MetaMask Snaps Directory Information Update form if the Snap is already allowlisted.

Code of conduct

Be respectful and constructive. Report security issues privately (see SECURITY.md).