63 lines
2.2 KiB
Markdown
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)).
|