euv-cli 0.5.6

The official CLI tool for the euv UI framework, providing dev/release profiles with run/build modes, hot reload, and wasm-pack integration.
euv-cli-0.5.6 is not a library.

euv-cli

Official Documentation

Api Docs

The official CLI tool for the euv UI framework, providing run/build/fmt modes with hot reload and wasm-pack integration.

Installation

cargo install euv-cli

Usage

The CLI uses the pattern euv-cli <action> where:

  • Action: run (build + start server), build (build only), or fmt (format euv macros)

All wasm-pack build arguments are transparently forwarded after --.

Run (build + dev server)

# Build and start dev server with hot-reload
euv-cli run -- --target web --out-name euv

# Build and start dev server with custom crate path and port
euv-cli run --crate-path ./example --port 80 -- --target web --out-name euv

# Release build with dev server
euv-cli run --crate-path ./example -- --release --target web --out-name euv

# Use a custom static assets directory instead of the default "www"
euv-cli run --www-dir www -- --target web --out-name euv

Fmt (format euv macros)

Format euv macro invocations (html!, class!, css_vars!, watch!) in Rust source files:

# Format all .rs files in the current directory (recursive)
euv-cli fmt

# Format all .rs files in a specific directory
euv-cli fmt --path ./src

# Format a single file
euv-cli fmt --path src/main.rs

# Check if formatting is needed without modifying files
euv-cli fmt --check

# Check a specific path
euv fmt --path ./src --check

Formatting Rules

  • Tag name and { separated by exactly one space
  • Attribute name immediately followed by :, then one space before the value
  • if { expr } / match { expr } / for pattern in { expr } with proper spacing
  • => in watch! macros with proper spacing
  • Content inside expression braces { expr } is preserved verbatim; only template-level whitespace is normalized

Fmt Options

Option Short Default Description
--path -p . Path to the directory or file to format
--check false Check if formatting is needed without modifying files

Build (build only)

# Dev build
euv-cli build -- --target web --out-name euv

# Release build
euv-cli build -- --release --target web --out-name euv

# Build with custom crate path and static directory
euv-cli build --crate-path ./example --www-dir www -- --release --target web --out-dir www/pkg --out-name euv

Via Cargo

Run (build + dev server)

cargo run -p euv-cli -- run --crate-path ./example --port 80 -- --target web --out-dir www/pkg --out-name euv
# Custom static directory
cargo run -p euv-cli -- run --crate-path ./example --www-dir www -- --target web --out-name euv

Build (build only)

cargo run -p euv-cli -- build --crate-path ./example -- --release --target web --out-dir www/pkg --out-name euv

Fmt (format euv macros)

# Format euv macros
cargo run -p euv-cli -- fmt --path ./example
# Check formatting
cargo run -p euv-cli -- fmt --check --path ./example

Options

Option Short Default Description
--crate-path -c . Path to the Rust crate containing the WASM application
--port -p 80 Port for the development server
--www-dir www Directory name for static assets and generated HTML (relative to crate-path)

How --www-dir Works

The --www-dir option controls where the CLI looks for and generates static assets:

  • index.html is generated inside {crate-path}/{www-dir}/
  • WASM artifacts are placed in {crate-path}/{www-dir}/pkg/ by default (unless overridden by --out-dir)
  • Dev server serves files under the /{www-dir}/ route prefix
  • JS import path in index.html is automatically computed relative to the www directory

For example, with --www-dir www:

example/
├── www/           ← static assets directory
│   ├── index.html    ← generated HTML
│   └── pkg/          ← WASM build output
│       ├── euv.js
│       └── euv_bg.wasm

wasm-pack Options (transparent passthrough after --)

All wasm-pack build flags are forwarded as-is. Common options:

Option Description
--target Target environment: bundler, nodejs, web, no-modules, deno
--out-dir Output directory with a relative path
--out-name Output file names, defaults to package name
--dev Create a development build
--release Create a release build
--profiling Create a profiling build
--scope The npm scope to use in package.json
--mode Steps to be run: no-install, normal, force
--no-typescript Disable TypeScript declaration file generation
--weak-refs Enable usage of the JS weak references proposal
--reference-types Enable usage of WebAssembly reference types
--no-pack Do not generate a package.json
--no-opt Skip optimization with wasm-opt

See wasm-pack build --help for the full list of options.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Contact

For any inquiries, please reach out to the author at root@ltpp.vip.