.. | ||
bin | ||
src | ||
Cargo.lock | ||
Cargo.toml | ||
README.md |
Reloadd
A powerful development tool for automatically restarting your application and reloading your browser when files change.
Features
- 🔄 File Watching: Monitor multiple directories for changes
- 🚀 Auto-Restart: Automatically restart your application when files change
- 🌐 Browser Reload: Automatically reload connected browsers
- 🔌 WebSocket Integration: Uses WebSockets for instant browser reloading
- 📊 Sequential Commands: Run multiple commands in sequence
- 🔧 Configurable Ports: Customize web server and WebSocket ports
- 🛠️ Robust Error Handling: Clear error messages and graceful recovery
Installation
From Source
# Clone the repository
git clone https://github.com/yourusername/reloadd.git
cd reloadd
# Build and install
cargo install --path .
Usage
Basic Usage
reloadd --watch src --watch templates -- run --example server
With Sequential Commands
reloadd --watch src --run "cargo build" --run "cargo test" --run "cargo run --example server"
Commands will run in the order specified. All commands except the last one will run to completion. The last command is treated as the long-running server process.
With Custom Port
reloadd --watch src --port 3000 --run "cargo run --example server"
In a Shell Script
Create a develop.sh
script for your project:
#!/usr/bin/env bash
set -e
# Start dev server with file watching and browser reload
reloadd \
--watch src \
--watch templates \
--port 8080 \
--run "cargo run --example server"
Make it executable and run it:
chmod +x develop.sh
./develop.sh
Command Line Options
Usage: reloadd [OPTIONS] --watch <PATH>... [-- <COMMAND>...]
Arguments:
[COMMAND]... Command to run on change (legacy format)
Options:
-w, --watch <PATH>... Paths to watch (like src/, templates/, scripts/)
-p, --port <PORT> Port for the web server [default: 8080]
-r, --run <COMMAND>... Multiple commands to run
-h, --help Print help
-V, --version Print version
LiveReload Integration
When you start the tool, it will output a script tag that you can add to your HTML files:
<script>
const ws = new WebSocket("ws://localhost:35729");
ws.onmessage = (msg) => {
if (msg.data === "reload") location.reload();
};
</script>
Add this script to your HTML templates to enable automatic browser reloading.
How It Works
- Reloadd watches specified directories for file changes
- When a change is detected, it runs your commands in sequence
- Build commands (all except the last) run to completion before proceeding
- The last command (typically a server) runs and stays active
- After a brief delay, it sends a reload signal to connected browsers
- Browsers with the LiveReload script will automatically refresh
Error Handling
Reloadd includes robust error handling:
- Validates watch paths before starting
- Checks for port availability
- Provides clear error messages
- Gracefully exits with error codes when critical errors occur
License
MIT