Production build — resolve dependencies, split chunks, bundle, and write assets.
Walks the dependency graph from entry files, splits code at dynamic import
boundaries, compiles everything through the Pipeline, bundles each chunk
with OXC.bundle/2, 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"):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"):code_splitting— split dynamic imports into separate chunks (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"}