First off, thank you for considering contributing to FlutterJS! It's people like you that make FlutterJS such a great tool.
Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/your-username/flutterjs.git cd flutterjs - Setup the environment:
# Get Dart dependencies dart pub get # Initialize project (installs JS dependencies for the engine) dart run tool/init.dart
We use a monorepo structure. The core logic is in packages/flutterjs_engine (Node.js) and the CLI/Analyzer is in Dart packages.
To test your changes, use the counter example:
# Windows (PowerShell)
.\flutterjs.ps1 run --to-js --serve
# Linux/Mac
dart run bin/flutterjs.dart run --to-js --serveIf you modify files in packages/flutterjs_engine, you must rebuild the binary:
cd packages/flutterjs_engine
npm install
npm run build:windows # or build:macos / build:linuxBugs are tracked as GitHub issues. Create an issue on that repository and provide the following information:
- A quick summary and/or background.
- Steps to reproduce. Be specific!
- Sample code to help us reproduce the issue.
- What you expected would happen.
- What actually happened.
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work).
Enhancement suggestions are tracked as GitHub issues. You can create an issue on that repository to:
- Ask questions about the project.
- Discuss the current state of the code.
- Submit a bug report or feature request.
- Create a branch from
master(e.g.,feat/add-new-widgetorfix/engine-crash). - Make your changes. Ensure you follow the coding style.
- Run tests (if applicable).
- Update documentation if you change functionality or add new features.
- Push your branch to your fork.
- Open a Pull Request against the
flutterjsmasterbranch. - Reference any relevant issues in your PR description (e.g., "Fixes #123").
- Dart: We follow the standard Dart Style Guide.
- Run
dart format .before committing. - Run
dart analyzeto check for lints.
- Run
- JavaScript: We use standard ES6+ syntax.
- Ensure your code matches the existing style in
packages/flutterjs_engine.
- Ensure your code matches the existing style in
By contributing, you agree that your contributions will be licensed under its BSD 3-Clause License.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.