Rustelo/docs/howto/using-cargo-rustelo.md

324 lines
7.9 KiB
Markdown
Raw Normal View History

2026-02-08 20:12:31 +00:00
# Using Cargo Rustelo - The Easy Way
Rustelo provides a powerful Cargo subcommand that makes creating and managing Rustelo sites incredibly simple.
## 🚀 Installation
Install Rustelo CLI as a Cargo subcommand:
```bash
# Install from local development
cargo install --path rustelo/crates/rustelo-cli
# Or install from crates.io (when published)
cargo install cargo-rustelo
```
## 🎯 Quick Start - 30 Seconds to a Working Site
```bash
# 1. Create a new site (does everything automatically!)
cargo rustelo init my-awesome-site
# 2. Navigate to the project
cd my-awesome-site
# 3. Start development server
cargo rustelo dev
# 4. Visit http://127.0.0.1:3030 🎉
```
That's it! You have a fully functional Rustelo site with:
- ✅ Framework-as-dependency architecture
- ✅ Asset fallback system (Local → Framework → Generated)
- ✅ Complete project structure
- ✅ Development server with hot reload
- ✅ Production build configuration
## 📋 Available Commands
### **Project Management**
#### **`cargo rustelo init <name>`** - Create New Site
Creates a complete Rustelo implementation with all necessary files.
```bash
# Basic usage
cargo rustelo init my-site
# With custom path
cargo rustelo init my-blog --path ./sites/my-blog
# With different template
cargo rustelo init my-app --template advanced
```
**What it creates:**
- Complete `Cargo.toml` with framework dependencies
- Main application file with working examples
- Asset directories and configuration
- Justfile with framework fallbacks
- Leptos configuration for development
- All directory structure needed
#### **`cargo rustelo dev`** - Development Server
Starts development server with hot reload and asset watching.
```bash
# Start server on default port (3030)
cargo rustelo dev
# Custom port
cargo rustelo dev --port 8080
# Enable file watching (default)
cargo rustelo dev --watch
```
#### **`cargo rustelo build`** - Production Build
Builds optimized production version with asset resolution.
```bash
# Production build
cargo rustelo build --release
# Development build with assets
cargo rustelo build
# Skip asset processing
cargo rustelo build --no-assets
# Build specific asset categories only
cargo rustelo build --categories static,content
# Organize assets by category in output
cargo rustelo build --organize-by-category
```
#### **`cargo rustelo update`** - Framework Updates
Updates framework version while preserving local customizations.
```bash
# Update to latest version
cargo rustelo update
# Update to specific version
cargo rustelo update 1.2.3
# Force update (overwrites conflicts)
cargo rustelo update --force
```
### **Asset Management**
#### **`cargo rustelo assets list`** - View Assets
Shows all available assets and their resolution paths.
```bash
# List all assets
cargo rustelo assets list
# Filter by category
cargo rustelo assets list --categories static,content
# Show category statistics
cargo rustelo assets list --stats
```
#### **`cargo rustelo assets check`** - Asset Conflicts
Checks for conflicts between local and framework assets.
```bash
# Check all assets
cargo rustelo assets check
# Check specific categories
cargo rustelo assets check --categories config
```
#### **`cargo rustelo assets resolve <path>`** - Asset Resolution
Shows exactly where a specific asset resolves to.
```bash
# Resolve specific asset
cargo rustelo assets resolve styles/main.css
# Shows: Local → Framework → Generated priority
```
#### **`cargo rustelo assets organize`** - Organize Assets
Organizes assets by category in target directory.
```bash
# Organize all assets
cargo rustelo assets organize ./organized-assets
# Organize specific categories
cargo rustelo assets organize ./dist --categories static,content
```
### **Build Pipeline**
#### **`cargo rustelo pipeline init`** - Setup Build Pipeline
Initializes advanced build pipeline configuration.
```bash
# Initialize pipeline config
cargo rustelo pipeline init
# Force overwrite existing config
cargo rustelo pipeline init --force
```
#### **`cargo rustelo pipeline targets`** - List Build Targets
Shows all available build targets (dev, prod, cross-linux, etc.).
#### **`cargo rustelo pipeline run <target>`** - Run Build Target
Executes specific build target with hooks and asset processing.
```bash
# Run production build target
cargo rustelo pipeline run prod
# Run with custom variables
cargo rustelo pipeline run dev --vars debug=true,mode=development
```
### **Cross-Compilation** (for CI/CD)
#### **`cargo rustelo cross init`** - Setup Cross-Compilation
Configures Docker-based cross-compilation for building Linux binaries on macOS.
```bash
# Initialize cross-compilation
cargo rustelo cross init
# Custom target and image
cargo rustelo cross init --target x86_64-unknown-linux-gnu --image rust:latest
# Force overwrite existing config
cargo rustelo cross init --force
```
#### **`cargo rustelo cross build`** - Cross-Compile
Builds application for Linux using Docker containers.
```bash
# Build for Linux (production)
cargo rustelo cross build
# Development build
cargo rustelo cross build --mode dev
# Custom target
cargo rustelo cross build --target aarch64-unknown-linux-gnu
# Verbose output
cargo rustelo cross build --verbose
# Skip Docker image build if exists
cargo rustelo cross build --skip-image-build
```
#### **`cargo rustelo cross test`** - Cross-Platform Testing
Runs tests in cross-compilation environment.
```bash
# Run tests in Linux container
cargo rustelo cross test
# Test specific target
cargo rustelo cross test --target x86_64-unknown-linux-gnu
```
## 🎯 Common Workflows
### **Starting a New Project**
```bash
cargo rustelo init my-site
cd my-site
cargo rustelo dev
```
### **Adding Features**
```bash
# Check available assets
cargo rustelo assets list
# Check what gets overridden
cargo rustelo assets check
# Build with specific features
cargo rustelo build --categories auth,content
```
### **Production Deployment**
```bash
# Build optimized version
cargo rustelo build --release --organize-by-category
# Or use build pipeline
cargo rustelo pipeline run prod
# For Linux servers (from macOS)
cargo rustelo cross build --mode release
```
### **Framework Updates**
```bash
# Update framework dependencies
cargo rustelo update
# Check if any assets need attention
cargo rustelo assets check
# Rebuild with new framework version
cargo rustelo build
```
## ✨ Benefits Over Manual Setup
| **Aspect** | **Manual Setup** | **`cargo rustelo init`** |
|------------|------------------|--------------------------|
| **Time** | 30+ minutes | 30 seconds |
| **Files Created** | 8+ files manually | Everything automated |
| **Configuration** | Error-prone manual config | Perfect config every time |
| **Dependencies** | Must know exact versions | Latest compatible versions |
| **Asset System** | Must understand fallback logic | Working out of the box |
| **Leptos Config** | Complex metadata setup | Configured automatically |
| **Framework Updates** | Manual dependency management | `cargo rustelo update` |
## 🔄 Typical Development Cycle
```bash
# 1. Create project
cargo rustelo init my-project && cd my-project
# 2. Development with hot reload
cargo rustelo dev
# 3. Check assets and build
cargo rustelo assets list
cargo rustelo build
# 4. Update framework when needed
cargo rustelo update
# 5. Deploy to production
cargo rustelo cross build # For Linux servers
```
## 🎉 Result
With `cargo rustelo`, you get a **true framework-as-dependency architecture** with:
-**No forking required** - Pure dependency usage
-**30-second setup** - From zero to working site instantly
-**Asset fallback system** - Local overrides work automatically
-**Framework updates** - `cargo rustelo update` gets latest features
-**Professional tooling** - All the power, none of the complexity
-**Production ready** - Optimized builds, cross-compilation, CI/CD support
2026-02-08 20:37:49 +00:00
**This is exactly what modern framework tooling should be!** 🚀