# Configure Project This chapter will introduce you to how to configure the CLI with your `Dioxus.toml` file Be aware that if the config file is present in the folder, some fields must be filled out, or the CLI tool will abort. The mandatory [table headers](https://toml.io/en/v1.0.0#table) and keys will have a '✍' sign beside it. ## Structure The CLI uses a `Dioxus.toml` file in the root of your crate to define some configuration for your `dioxus` project. ### Application ✍ General application confiration: ``` [application] # configuration ``` 1. ***name*** ✍ - project name & title 2. ***default_platform*** ✍ - which platform target for this project. ``` name = "my-project" ``` 2. ***default_platform*** - The platform this project targets ```ß # current supported platforms: web, desktop # default: web default_platform = "web" ``` if you change this to `desktop`, the `dx build` will default building a desktop app 3. ***out_dir*** - The directory to place the build artifacts from `dx build` or `dx service` into. This is also where the `assets` directory will be copied to ``` out_dir = "dist" ``` 4. ***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" ``` 5. ***sub_package*** - The sub package in the workspace to build by default ``` sub_package = "my-crate" ``` ### Web.App ✍ Configeration specific to web applications: ``` [web.app] # configuration ``` 1. ***title*** - The title of the web page ``` # HTML title tag content title = "dioxus app | ⛺" ``` 2. ***base_path*** - The base path to build the appliation 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 ✍ Configeration related to the development server: ``` [web.watcher] # configuration ``` 1. ***reload_html*** - If this is true, the cli will rebuild the index.html file every time the application is rebuilt ``` reload_html = true ``` 2. ***watch_path*** - The files & directories to moniter for changes ``` watch_path = ["src", "public"] ``` 3. ***index_on_404*** - If enabled, Dioxus CLI will serve the root page when a route is not found. *This is needed when serving an application that uses the router* ``` index_on_404 = true ``` ### Web.Resource ✍ Configeration related to static resources your application uses: ``` [web.resource] # configuration ``` 1. ***style*** - The styles (`.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" ] ``` 2. ***script*** - The additional scripts (`.js` files) to include in your application ``` style = [ # include from public_dir. "./assets/index.js", # or some asset from online cdn. "https://cdn.jsdelivr.net/npm/bootstrap/dist/js/bootstrap.js" ] ``` ### Web.Resource.Dev ✍ Configeration related to static resources your application uses in development: ``` [web.resource.dev] # configuration ``` 1. ***style*** - The styles (`.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" ] ``` 2. ***script*** - The additional scripts (`.js` files) to include in your application ``` style = [ # include from public_dir. "./assets/index.js", # or some asset from online cdn. "https://cdn.jsdelivr.net/npm/bootstrap/dist/js/bootstrap.js" ] ``` ### Web.Proxy Configeration related to any proxies your application requires durring development. Proxies will forward requests to a new service ``` [web.proxy] # configuration ``` 1. ***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 404 ``` backend = "http://localhost:8000/api/" ``` This 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 not currently supported). ## Config example ```toml [application] # App (Project) 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 = "dioxus | ⛺" [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 `assets` in web platform [web.resource] # CSS style file style = [] # Javascript code file script = [] [web.resource.dev] # serve: [dev-server] only # CSS style file style = [] # Javascript code file script = [] [[web.proxy]] backend = "http://localhost:8000/api/" ```