Configuration

vv.config.json, the manifest, and environment variables.

`vv.config.json`

Written by init, in your project root.

source
JSON
{
  "tsx": true,
  "framework": "next",
  "aliases": { "vv": "@/components/vv" }
}
FieldTypeDescription
tsxbooleanWhether your project uses TypeScript/TSX
framework"next" | "vite" | "unknown"Detected framework
aliases.vvstringWhere components are installed (default @/components/vv)

Alias resolution: @/components/vv resolves to src/components/vv when your project has a src/ directory, or components/vv when it doesn't.

TypeScript and JavaScript

The tsx field controls the language VV writes into your project. init sets it from project detection, but you can change it by hand.

tsxWhat add writes
trueThe components as authored: .tsx and .ts files, with their full type annotations.
falseJavaScript: each .tsx becomes .jsx and each .ts becomes .js, with type annotations stripped but JSX, comments, and structure preserved.

Types in JavaScript projects

When tsx is false, VV writes a generated declaration file (.d.ts) next to each transpiled file, so VideoCard.jsx ships alongside VideoCard.d.ts:

source
TEXT
src/components/vv/video-card/
├─ index.js
├─ index.d.ts
├─ VideoCard.jsx
└─ VideoCard.d.ts

The component itself is plain JavaScript, but the declaration carries its full prop contract. Your editor keeps autocomplete, prop hints, and type-checking on the component's props, the same experience a TypeScript consumer gets.

Note: stripping types from the source would otherwise leave you with any props, and optional props that look required. The .d.ts sidecar preserves the original types, so the editor experience is identical. This is automatic; there is nothing to configure beyond tsx.

TypeScript projects (tsx: true) do not receive .d.ts files. The .tsx source already carries its types inline, so a separate declaration would be redundant.

`vv-manifest.json`

Also created in your project root. It tracks which components you've installed, their versions, and the files each one wrote. It powers info, diff, update, and add --prune. Don't edit it by hand; the CLI maintains it.