Thank you for your interest in contributing to Fict!
- Node.js 20+
- pnpm 9+
# Clone the repository
git clone https://github.com/fictjs/fict.git
cd fict
# Install dependencies
pnpm install
# Install git hooks
pnpm prepare
# Start development
pnpm devpackages/runtime- Core reactive runtimepackages/compiler- Babel compilerpackages/vite-plugin- Vite integrationpackages/eslint-plugin- ESLint rulespackages/devtools- Browser DevToolspackages/docs-site- Documentation websitepackages/testing-library- Testing librarypackages/ssr- Server-side renderingexamples/- Example applications
pnpm test # Run all tests
pnpm test:watch # Watch mode
pnpm test:coverage # With coverage- The TypeScript transformer emits fine-grained DOM bindings by default; set
fineGrainedDom: falsein yourtsconfigplugin entry only when bisecting regressions. - The runtime uses fine-grained updates exclusively. All components benefit from surgical DOM updates and node reuse.
pnpm lint # ESLint
pnpm typecheck # TypeScript
pnpm format # Prettierpnpm build # Build all packages
pnpm build --filter @fictjs/runtime # Build specific packagepnpm commitExamples:
feat(runtime): add batch update supportfix(compiler): handle edge case in JSX transformdocs: update API reference
When making changes that should be released:
pnpm changesetFollow the prompts to:
- Select changed packages
- Choose version bump type
- Write a summary
- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Make your changes
- Add tests for new functionality
- Ensure all tests pass (
pnpm test) - Add a changeset if needed (
pnpm changeset) - Commit your changes
- Push to your fork
- Open a Pull Request
Please be respectful and constructive in all interactions.
Open an issue or start a discussion on GitHub.