rvx
Version:
A signal based rendering library
106 lines (81 loc) • 2.24 kB
Markdown
# Contributing
Contributions are generally welcome. If you have any questions, suggestions or find a bug, feel free to [file an issue](https://github.com/mxjp/rvx/issues).
## Project Structure
```bash
# Benchmark utilities
benchmark/
# Compiled modules & bundles:
dist/
es/ # Compiled ES modules & type definitions.
# Documentation source code:
docs/
assets/ # rvx logo
reference/ # API reference
# Source code for the examples:
examples/src/
# Scripts for development & publishing:
scripts/
# All the runtime source code:
src/
async/ # Async utilities
convert/ # Reactive conversion utilities
core/ # The core module
dom/ # rvx dom
element/ # Web Component API (RvxElement)
router/ # Routing API
store/ # Store API (reactive wrappers)
test/ # Test utilities
# Minimal templates for new projects:
templates/
vite/ # Vite + TypeScript & JSX
vite-js/ # Vite only
vite-ssg/ # Vite + TypeScript & JSX (Static site generation)
webpack/ # Webpack + TypeScript & JSX
# Unit tests for the runtime:
tests/
```
## Building Rvx
```bash
# Install dependencies:
npm ci
# Build & watch for changes:
npm start
# Build for production:
npm run build
```
## Running Tests
```bash
# Build rvx & tests:
npm run build
# Or build & watch for changes:
npm start
# Run (already built) tests:
npm test
```
## Building the Documentation
Building the docs also requires python and [mkdocs-material](https://squidfunk.github.io/mkdocs-material/)
```bash
# Install requirements:
pip install mkdocs-material
# Build examples:
npm run build --prefix examples
# Build the documentation:
mkdocs build --site-dir docs_out
# Or view live:
mkdocs serve --livereload
```
## Running benchmarks
The benchmark setup runs a set of benchmarks from `benchmark/src/benchmarks` against one or more bundled snapshots of rvx in the same browsing context.
```bash
cd benchmark
# Install dependencies.
npm ci
npx playwright install
# Build & bundle a snapshot of the current source code:
# This creates a "base" snapshot or an "update" snapshot if base already exists.
node ./snapshot.js
# Run benchmarks against existing snapshots:
node ./run.js
# Run only benchmarks starting with "signals-":
node ./run.js --only signals-
```