# An example Trunk.toml with all possible fields along with their defaults. # A sem-ver version requirement of trunk required for this project trunk-version = "*" [build] # The index HTML file to drive the bundling process. target = "index.html" # Build in release mode. release = false # Use a custom cargo profile. Overrides the default chosen by cargo. Ignored if the 'index.html' has one configured. # cargo_profile = "" # The output dir for all final assets. dist = "dist" # The public URL from which assets are to be served. public_url = "/" # Whether to include hash values in the output file names. filehash = true # Whether to inject scripts (and module preloads) into the finalized output. inject_scripts = true # Run without network access offline = false # Require Cargo.lock and cache are up to date frozen = false # Require Cargo.lock is up to date locked = false # Control minification minify = "never" # can be one of: never, on_release, always # Allow disabling sub-resource integrity (SRI) no_sri = false # An optional cargo profile to use # cargo_profile = "release-trunk" [watch] # Paths to watch. The `build.target`'s parent folder is watched by default. watch = [] # Paths to ignore. ignore = [] [serve] # The address to serve on. addresses = ["127.0.0.1"] # The port to serve on. port = 8080 # Aliases to serve, typically found in an /etc/hosts file. # aliases = ["http://localhost.mywebsite.com"] # Disable the reverse DNS lookup during startup disable_address_lookup = false # Open a browser tab once the initial build is complete. open = false # Whether to disable fallback to index.html for missing files. no_spa = false # Disable auto-reload of the web app. no_autoreload = false # Disable error reporting no_error_reporting = false # Additional headers set for responses. # headers = { "test-header" = "header value", "test-header2" = "header value 2" } # Protocol used for autoreload WebSockets connection. ws_protocol = "ws" # The certificate/private key pair to use for TLS, which is enabled if both are set. # tls_key_path = "self_signed_certs/key.pem" # tls_cert_path = "self_signed_certs/cert.pem" # Additional headers to send. NOTE: header names must be valid HTTP headers. # headers = { "X-Foo" = "bar" } [clean] # The output dir for all final assets. dist = "dist" # Optionally perform a cargo clean. cargo = false [tools] # Default dart-sass version to download. sass = "1.69.5" # Default wasm-bindgen version to download. wasm_bindgen = "0.2.89" # Default wasm-opt version to download. wasm_opt = "version_116" # Default tailwindcss-cli version to download. tailwindcss = "3.3.5" ## proxy # Proxies are optional, and default to `None`. # Proxies are only run as part of the `trunk serve` command. [[proxy]] # This WebSocket proxy example has a backend and ws field. This example will listen for # WebSocket connections at `/api/ws` and proxy them to `ws://localhost:9000/api/ws`. backend = "ws://localhost:9000/api/ws" ws = true [[proxy]] # This proxy example has a backend and a rewrite field. Requests received on `rewrite` will be # proxied to the backend after rewriting the `rewrite` prefix to the `backend`'s URI prefix. # E.G., `/api/v1/resource/x/y/z` -> `/resource/x/y/z` rewrite = "/api/v1/" backend = "http://localhost:9000/" [[proxy]] # This proxy specifies only the backend, which is the only required field. In this example, # request URIs are not modified when proxied. backend = "http://localhost:9000/api/v2/" [[proxy]] # This proxy example has an insecure field. In this example, # connections to https://localhost:9000/api/v3/ will not have certificate validation performed. # This is useful for development with a server using self-signed certificates. backend = "https://localhost:9000/api/v3/" insecure = true [[proxy]] # This proxy example has the no_system_proxy field. In this example, # connections to https://172.16.0.1:9000/api/v3/ will bypass the system proxy. # This may be useful in cases where a local system has a proxy configured which cannot be reconfigured, but the # proxy target (of trunk serve) is not know/accessible by the system's proxy. backend = "https://172.16.0.1:9000/api/v3/" no_system_proxy = true ## hooks # Hooks are optional, and default to `None`. # Hooks are executed as part of Trunk's main build pipeline, no matter how it is run. [[hooks]] # This hook example shows all the current available fields. It will execute the equivalent of # typing "echo Hello Trunk!" right at the start of the build process (even before the HTML file # is read). By default, the command is spawned directly and no shell is used. stage = "pre_build" command = "echo" command_arguments = ["Hello", "Trunk!"] [[hooks]] # This hook example shows running a command inside a shell. As a result, features such as variable # interpolation are available. This shows the TRUNK_STAGING_DIR environment variable, one of a set # of default variables that Trunk inserts into your hook's environment. Additionally, this hook # uses the build stage, meaning it executes in parallel with all of the existing asset pipelines. stage = "build" command = "sh" command_arguments = ["-c", "echo Staging directory: $TRUNK_STAGING_DIR"] [hooks.windows] # This shows how to create OS-specific overrides for hooks. # This will override the hook directly above it. # For overrides, only the `command` and `command_arguments` keys must be specified. # Valid values are `windows`, `macos`, and `linux`. command = "cmd" command_arguments = ["/c", "echo Staging directory: %TRUNK_STAGING_DIR%"] [[hooks]] # This hook example shows how command_arguments defaults to an empty list when absent. It also uses # the post_build stage, meaning it executes after the rest of the build is complete, just before # the staging directory is copied over the dist directory. This means that it has access to all # built assets, including the HTML file generated by trunk. stage = "post_build" command = "ls"