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

63 lines
2.2 KiB
Markdown

# 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](../PACKAGE_MANAGER.md)
## Setup
```bash
# 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](../TESTING_INSTRUCTIONS.md) and [E2E_PREPARATION.md](../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):
```bash
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](../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](../SECURITY.md)).