Workflows

Configuration

Understand the project settings and UI install records that the hulla CLI reads and writes.

On this page

The hulla CLI stores project-level defaults in .hulla/hulla.json and UI registry/install choices in .hulla/ui.json. Keeping these files in version control makes component paths and package-manager commands reproducible across your team.

hulla init detects the project’s package manager and writes .hulla/hulla.json. A typical file records install/update scripts and the paths to the UI and API configuration files.

.hulla/hulla.json
{
  "$schema": "https://raw.githubusercontent.com/hulladev/cli/v0.0.0-beta.1/schemas/hulla.schema.json",
  "cli": {
    "scripts": {
      "add": "bun add",
      "addDev": "bun add -D",
      "uninstall": "bun remove",
      "upgrade": "bun update"
    }
  },
  "configs": { "api": "api.config.ts", "ui": ".hulla/ui.json" }
}

The script values shown are Bun defaults; hulla init writes values for the detected package manager. UI paths such as configs.ui resolve from the project root. For a config file in a custom location, pass its absolute path with --config; the current relative-path flow can resolve a relative value again from its containing directory. A config directly inside .hulla/ uses the directory above .hulla/ as the UI project root.

.hulla/ui.json records configured sources, installed library roots, framework targets, and an optional post-add formatting command. Let hulla ui init create and maintain the install records, especially when a library supports multiple frameworks or shared support files.

.hulla/ui.json
{
  "version": 1,
  "sources": ["../my-ui-registry"],
  "installs": [],
  "postAddUpdateStep": ""
}

This is the minimal shape for a local registry path relative to the project root. UI initialization fills installs with the selected framework paths and any shared files; do not add a hand-written install record from this abbreviated example.

The built-in UI source currently points at the upstream master branch. For a repeatable team setup, replace it with a GitHub tree URL pinned to a release tag or commit, or use a local registry path managed in the same repository. A branch can resolve to different content when the CLI refreshes it.

The standard project cache contains .hulla/.cache/ui.cache.json for resolved UI source records. Legacy API generator work uses <api-config-directory>/.hulla/.cache/api (with the default api.config.ts, this is .hulla/.cache/api). Remote Git downloads are cached separately under ~/.cache/hulla/gittar. Commit the configuration and installed application source, not generated cache contents. To refresh UI source selection, rerun hulla ui init; see UI components for cache-specific steps.