Production build — resolve dependencies, split chunks, bundle, and write assets.
Walks the dependency graph from entry files, compiles source through
Volt.Pipeline, expands Vite-compatible features such as import.meta.glob()
and dynamic import variables, bundles chunks with OXC.bundle/2, rewrites CSS
and JavaScript asset references, and writes content-hashed output files with a
manifest.
Summary
Functions
Build production assets from one or more entry files.
Types
@type build_result() :: %{ js: %{path: String.t(), size: non_neg_integer()} | [%{path: String.t(), size: non_neg_integer()}], css: %{path: String.t(), size: non_neg_integer()} | nil, manifest: %{required(String.t()) => String.t()} }
Functions
@spec build(keyword()) :: {:ok, build_result()} | {:error, term()}
Build production assets from one or more entry files.
Options
:entry— entry file path or list of paths (required):outdir— output directory (default:"priv/static/assets"):public_dir— optional Vite-style public directory copied to the static root as-is:target— JS target (e.g.:es2020):minify— minify output (default:true):sourcemap— generate source maps (default:true):define— compile-time replacements:node_modules— path to node_modules (default: auto-detect):resolve_dirs— additional directories to resolve bare specifiers (e.g.["deps"]):name— output base name (default: derived from entry filename):aliases— import alias map (e.g.%{"@" => "assets/src"}):plugins— list ofVolt.Pluginmodules:mode— build mode for env variables (default:"production"):env_prefix— env variable prefix or prefixes exposed to client code (default:"VOLT_"):asset_url_prefix— public URL prefix for emitted asset references (default:"/assets"):code_splitting— split dynamic imports into separate chunks (default:true):tree_shaking— remove unused exports (default:true):chunks— manual chunk definitions, map of chunk name to list of patterns:chunks: %{"vendor" => ["vue", "vue-router"], "ui" => ["assets/src/components"]}:external— specifiers to exclude from the bundle and access as globals. Accepts a list (global name auto-derived) or a map ofspecifier => global_name:external: ["vue", "phoenix"] external: %{"vue" => "Vue", "phoenix" => "Phoenix"}