Every key of roots.lisp in Roots 0.4.0, from the schema the toolchain validates the file against. An unknown key is an error with a suggestion; nothing in the file is evaluated.
Package-style name: lowercase letters, digits and dashes (default: the directory name).
:title
string
Human-readable app name (default: the name, capitalised).
:version
semver
"0.1.0"
App version, MAJOR.MINOR.PATCH.
:id
app-id
Reverse-DNS app id, e.g. com.example.todo (default: com.example.<name>).
:description
string
One-line description (manifests, package.json).
:entry
path
Entry component (default: the first of src/App.vue, .roots, .lisp, .ts, .js).
:theme
theme
Colour tokens, e.g. (:primary "#42b883" :dark (:bg "#111")).
:use
list of path
Modules whose default export is installed with app.use() before mounting, e.g. ("src/router.ts").
:safelist
list of string
Utility classes to generate even when no template uses them literally.
:public
path
"public"
Directory copied verbatim into DOM targets.
:icon
path
"icon.png"
App icon (PNG). A default icon is generated when the file does not exist.
:strict
boolean
Treat unknown utility classes as errors (like --strict).
:bundle
boolean
t
roots build: bundle each target's modules into one tree-shaken file per entry (roots dev and roots run never bundle).
:minify
boolean
t
roots build: minify the bundle (nothing without :bundle).
:error-codes
boolean
roots build: drop the text of the runtime's errors and warnings from the bundle; they read "[R208] " (like --error-codes; the codes are listed in docs/runtime.md).
:dev
property list
Dev server settings.
:data
property list
roots/data: pin another SQLite WASM build (all three keys together; D164, D166).
:csp
property list
Additions to the page's Content-Security-Policy.
:native
property list
Native shells for ios and android (Roots shell or Capacitor).
:targets
targets
Targets this app supports, with options: (:web () :pwa (:theme-color "#…") …).
Scope → registry. A mapped scope never falls back to another registry (SC-7).
:strict
boolean
Fail (instead of warn) when a packument disagrees with the tarball's package.json (SC-5).
:builds
list of property list
Packages whose install scripts may be approved. When this key is present, an approval in roots.lock counts only for a package listed here, so a change to roots.lock alone cannot approve a script (SC-1).
:verify-age
boolean
Check the publish time of every locked version against the cooldown before installing (one metadata request per package), so a change to roots.lock alone cannot pin a version inside the cooldown (SC-3).
:script-timeout
integer 1–3600
300
Seconds an approved install script may run (SC-2).