Build Options

Entry

config :volt, entry: "assets/js/app.ts"

Entry file path or list of paths.

Output Directory

config :volt, outdir: "priv/static/assets"

Root

config :volt, root: "assets"

Source directory for asset resolution.

Sources

config :volt, sources: ["**/*.{js,ts,jsx,tsx,vue}"]

Glob patterns for file discovery (formatting, linting).

Ignore

config :volt, ignore: ["node_modules/**", "vendor/**"]

Target

config :volt, target: :es2020

JS downlevel target.

Format

config :volt, format: :iife

Output format: :iife, :esm, or :cjs.

Minify

config :volt, minify: true

Hash

config :volt, hash: true

Content-hash filenames for cache busting.

Source Maps

config :volt, sourcemap: true

true, :hidden (no URL comment), or false.

Code Splitting

config :volt, code_splitting: true

External

config :volt, external: ~w(phoenix phoenix_html)

Exclude packages from the bundle.

Aliases

config :volt, aliases: %{"@" => "assets/src"}

Import path aliases.

Chunks

config :volt, chunks: %{"vendor" => ["vue"]}

Manual chunk boundaries.

Plugins

config :volt, plugins: [MyPlugin]

Import Source

config :volt, import_source: "react"

JSX import source for React.

Resolve Dirs

config :volt, resolve_dirs: ["node_modules", "deps"]

Additional directories for bare import resolution.

Mode

config :volt, mode: :production

Build mode for env variables. Override with --mode.

Vapor

config :volt, vapor: true

Enable Vue Vapor mode compilation.

Custom Renderer

config :volt, custom_renderer: true

Treat non-HTML tags as renderer-native elements (for PhoenixVapor).

Loaders

config :volt, loaders: %{".js" => "jsx"}

Override file type parsing (e.g. for React projects using JSX in .js files).

Tailwind Options

CSS Input

config :volt, tailwind: [css: "assets/css/app.css"]

Scan Sources

config :volt, tailwind: [
  sources: [
    %{base: "lib/", pattern: "**/*.{ex,heex}"},
    %{base: "assets/", pattern: "**/*.{vue,ts,tsx}"}
  ]
]

Dev Server Options

Prefix

config :volt, :server, prefix: "/assets"

URL prefix for dev server routes.

Watch Dirs

config :volt, :server, watch_dirs: ["lib/", "assets/"]

Directories to watch for HMR.

Formatting Options

Semi

config :volt, :format, semi: false

Single Quote

config :volt, :format, single_quote: true
config :volt, :format, print_width: 100

Trailing Comma

config :volt, :format, trailing_comma: :none

Arrow Parens

config :volt, :format, arrow_parens: :always

Lint Options

Plugins

config :volt, :lint, plugins: [:typescript, :react]

Rules

config :volt, :lint, rules: %{"eqeqeq" => :deny}

Custom Rules

config :volt, :lint, custom_rules: [
  {MyApp.NoConsoleLog, :warn}
]