Configure Project
This chapter will teach you how to configure the CLI with the Dioxus.toml
file. There's an example which has comments to describe individual keys. You can copy that or view this documentation for a more complete learning experience.
"🔒" indicates a mandatory item. Some headers are mandatory, but none of the keys inside them are. In that case, you only need to include the header, but no keys. It might look weird, but it's normal.
Structure
Each header has its TOML form directly under it.
Application 🔒
[application]
Application-wide configuration. Applies to both web and desktop.
- name 🔒 - Project name & title.
name = "my_project"
- default_platform 🔒 - The platform this project targets
# Currently supported platforms: web, desktop default_platform = "web"
- out_dir - The directory to place the build artifacts from
dx build
ordx serve
into. This is also where theassets
directory will be copied into.out_dir = "dist"
- asset_dir - The directory with your static assets. The CLI will automatically copy these assets into the out_dir after a build/serve.
asset_dir = "public"
- sub_package - The sub package in the workspace to build by default.
sub_package = "my-crate"
Web.App 🔒
[web.app]
Web-specific configuration.
- title - The title of the web page.
# HTML title tag content title = "project_name"
- base_path - The base path to build the application for serving at. This can be useful when serving your application in a subdirectory under a domain. For example, when building a site to be served on GitHub Pages.
# The application will be served at domain.com/my_application/, so we need to modify the base_path to the path where the application will be served base_path = "my_application"
Web.Watcher 🔒
[web.watcher]
Development server configuration.
reload_html - If this is true, the cli will rebuild the index.html file every time the application is rebuilt
reload_html = true
watch_path - The files & directories to monitor for changes
watch_path = ["src", "public"]
index_on_404 - If enabled, Dioxus will serve the root page when a route is not found.This is needed when serving an application that uses the router. However, when serving your app using something else than Dioxus (e.g. GitHub Pages), you will have to check how to configure it on that platform. In GitHub Pages, you can make a copy of
index.html
named404.html
in the same directory.index_on_404 = true
Web.Resource 🔒
[web.resource]
Static resource configuration.
style - CSS files to include in your application.
style = [ # Include from public_dir. "./assets/style.css", # Or some asset from online cdn. "https://cdn.jsdelivr.net/npm/bootstrap/dist/css/bootstrap.css" ]
script - JavaScript files to include in your application.
script = [ # Include from asset_dir. "./public/index.js", # Or from an online CDN. "https://cdn.jsdelivr.net/npm/bootstrap/dist/js/bootstrap.js" ]
Web.Resource.Dev 🔒
[web.resource.dev]
This is the same as [web.resource]
, but it only works in development servers. For example, if you want to include a file in a dx serve
server, but not a dx serve --release
server, put it here.
Web.Proxy
[[web.proxy]]
Configuration related to any proxies your application requires during development. Proxies will forward requests to a new service.
- backend - The URL to the server to proxy. The CLI will forward any requests under the backend relative route to the backend instead of returning 404This will cause any requests made to the dev server with prefix /api/ to be redirected to the backend server at http://localhost:8000. The path and query parameters will be passed on as-is (path rewriting is currently not supported).
backend = "http://localhost:8000/api/"
Config example
This includes all fields, mandatory or not.
[application] # App name name = "project_name" # The Dioxus platform to default to default_platform = "web" # `build` & `serve` output path out_dir = "dist" # The static resource path asset_dir = "public" [web.app] # HTML title tag content title = "project_name" [web.watcher] # When watcher is triggered, regenerate the `index.html` reload_html = true # Which files or dirs will be monitored watch_path = ["src", "public"] # Include style or script assets [web.resource] # CSS style file style = [] # Javascript code file script = [] [web.resource.dev] # Same as [web.resource], but for development servers # CSS style file style = [] # JavaScript files script = [] [[web.proxy]] backend = "http://localhost:8000/api/"