CtroEnv
ctroenvType-Safe Environment Variables
Getting StartedQuick StartCore Concepts
defineEnv()string()number()boolean()pick()Chainable MethodsRefinementsError HandlingSchema Composition
CLI Overviewctroenv validatectroenv generatectroenv checkctroenv docsctroenv initCLI Configuration
Node AdapterVite AdapterNext.js Adapter
Migration from t3-envMigration from envalidMigration from dotenv

ctroenv init

Scaffold a new ctroenv configuration file interactively from the CLI.

  1. Docs
  2. CLI

ctroenv init

Scaffold a new CtroEnv configuration file.

Usage

ctroenv init [options]

Options

OptionDefaultDescription
--tsdefaultGenerate TypeScript config (ctroenv.config.ts)
--jsGenerate JavaScript config (ctroenv.config.js)
--jsonGenerate JSON config (ctroenv.json)
--minimalGenerate minimal config without optional fields

Examples

TypeScript config (default)

ctroenv init
# Creates: ctroenv.config.ts

JavaScript config

ctroenv init --js
# Creates: ctroenv.config.js

JSON config

ctroenv init --json
# Creates: ctroenv.json

Minimal config

ctroenv init --minimal
# Creates: ctroenv.config.ts with only the schema field
ctroenv init --json --minimal
# Creates: ctroenv.json with only the schema field

Generated Files

When using --ts or --js:

import { defineConfig } from "@ctroenv/cli"

export default defineConfig({
  schema: "./src/env.ts",
  // ...
})

When using --json:

{
  "schema": "./src/env.ts",
  "sources": {
    "default": ".env"
  },
  "output": {
    "example": ".env.example",
    "docs": "ENVIRONMENT.md"
  },
  "secrets": {
    "mask": [],
    "maskWith": "***"
  }
}

How is this guide?

Edit on GitHub

Last updated on Jun 24, 2026

Previousctroenv docsNextCLI Configuration

On this page

UsageOptionsExamplesTypeScript config (default)JavaScript configJSON configMinimal configGenerated Files