Accesses browser support JavaScript and other runtime files from an OTP application's priv directory.
priv is the OTP convention for application-specific runtime files. Volt uses this
module for its own bundled browser support code, and plugin authors can use it to
keep JavaScript and TypeScript in their application instead of embedding source in
Elixir strings.
The source may be either an OTP application atom or an {app, root} tuple. The
tuple form keeps repeated calls concise when several files live under the same
priv subdirectory:
assets = {:my_app, "islands"}
Volt.Priv.path(assets, "runtime.ts")
Volt.Priv.read!(assets, "runtime.ts")
Volt.Priv.render!(assets, "entry.ts", [], splices: [body: "start();"])
Volt.Priv.js!(assets, "runtime.ts")
Volt.Priv.js!(assets, "entry.ts", id: "counter", props: %{count: 1})render!/4 binds and splices templates while preserving TypeScript for a later
Volt build. js!/3 and js!/4 additionally compile the rendered source to browser
JavaScript. This keeps templates valid TypeScript or JavaScript files instead of
requiring EEx or textual source replacement.
Summary
Functions
Emits browser JavaScript for a support file stored under priv.
Returns the absolute path to a file under an OTP application's priv directory.
Reads a file from an OTP application's priv directory.
Renders a JavaScript or TypeScript template stored under priv.
Types
Functions
Emits browser JavaScript for a support file stored under priv.
TypeScript and JavaScript files are both accepted. When bindings are provided, the
source is parsed and $placeholder literals are replaced with JSON-compatible
JavaScript literals using OXC.bind/2 before the result is emitted.
Options:
:splices- a keyword list of$placeholdernames to statement, property, or array-element replacements accepted byOXC.splice/3.:rewrite_specifiers- a map or keyword list of import specifiers to rewrite after code generation.
Returns the absolute path to a file under an OTP application's priv directory.
Reads a file from an OTP application's priv directory.
Renders a JavaScript or TypeScript template stored under priv.
Literal bindings use OXC.bind/2, while the :splices option accepts statement,
property, and array-element replacements handled by OXC.splice/3. The rendered
source is not compiled, making this API suitable for virtual modules and generated
entries that will subsequently pass through Volt.Builder.