ForSure Logo
ForSure
CLILanguageDocumentationComponents

Getting Started

IntroductionInstallationQuick StartDownloads

Syntax

Basic SyntaxFile StructureCommentsAttributesImport Directives

AI & Neural Network

OverviewExamplesAdvanced FeaturesTeam UsageAPI Reference

Examples

Basic ExamplesIntermediate ExamplesAdvanced Examples

CLI Reference

CommandsOptionsConfiguration

API Reference

OverviewNode APIProgrammatic Usage

Tools & Extensions

VS Code ExtensionSyntax HighlightingEditor Integrations
ForSure Logo
ForSure

A powerful file structure definition language and CLI tool for developers.

GitHubTwitter

Products

CLI LanguageWeb EditorIDE Extensions

Resources

DocumentationExamplesTemplatesBlog

Company

AboutCareersContactPrivacy Policy

© 2026 ForSure. All rights reserved.

TermsPrivacyCookies

CLI Configuration

Configure the ForSure CLI to match your project needs and preferences.

Configuration File

The ForSure CLI can be configured using a .forsurerc.json file in your project root. This file allows you to customize default behavior, templates, and output settings.

Basic Configuration Example:

.forsurerc.json
json
{ "defaultOutput": "./output", "ignorePatterns": [ "node_modules", ".git", "dist" ], "attributes": { "defaultPermissions": "644", "encoding": "utf8" }, "templates": { "directory": "./templates", "defaultTemplate": "basic" } }

Complete Configuration Schema

Here's a comprehensive configuration file with all available options:

.forsurerc.json
json
{ // Global settings "version": "1.0.0", "defaultOutput": "./output", "ignorePatterns": [ "node_modules", ".git", "dist", "*.log", ".env*" ], // File and directory settings "files": { "encoding": "utf8", "defaultPermissions": "644", "directoryPermissions": "755", "overwriteExisting": false, "preserveGitIgnore": true }, // Template configuration "templates": { "directory": "./templates", "defaultTemplate": "basic", "customTemplates": { "react-component": "./templates/react/", "vue-component": "./templates/vue/", "api-endpoint": "./templates/api/" } }, // Design system settings "designTokens": { "input": "./lib/design-tokens.ts", "output": "./styles/tokens.css", "format": "css", "watch": false, "themes": ["light", "dark"], "customProperties": true }, // Component generation "components": { "directory": "./components/ui", "prefix": "forsure-", "typescript": true, "test": true, "storybook": true, "defaultExports": true, "cssModules": false }, // Build configuration "build": { "outputDirectory": "./dist", "minify": true, "sourcemap": true, "target": "es2020", "bundle": false, "cleanOutput": true }, // Testing configuration "testing": { "framework": "jest", "coverage": true, "coverageThreshold": 80, "testEnvironment": "jsdom", "setupFiles": ["./jest.setup.js"] }, // Publishing settings "publishing": { "registry": "npm", "defaultTag": "latest", "access": "public", "changelog": true, "gitTag": true }, // Development settings "development": { "port": 3000, "hotReload": true, "openBrowser": true, "verbose": false }, // Integration settings "integrations": { "vscode": { "enabled": true, "snippets": true, "intellisense": true }, "git": { "hooks": true, "autoCommit": false, "branchProtection": false }, "ci": { "github": true, "gitlab": false, "jenkins": false } } }

Configuration Sections

Files & Directories

Control how files and directories are created:

json
{ "files": { "encoding": "utf8", // File encoding "defaultPermissions": "644", // Default file permissions "directoryPermissions": "755", // Default directory permissions "overwriteExisting": false, // Whether to overwrite existing files "preserveGitIgnore": true, // Keep existing .gitignore files "backupOnOverwrite": true // Create backups before overwriting } }

Templates

Configure template locations and defaults:

json
{ "templates": { "directory": "./templates", // Custom templates directory "defaultTemplate": "basic", // Default template to use "fallbackTemplate": "minimal", // Fallback if default not found "customTemplates": { // Named custom templates "react-component": "./templates/react/", "vue-component": "./templates/vue/", "api-endpoint": "./templates/api/" }, "templateVariables": { // Global template variables "author": "Your Name", "license": "MIT", "version": "1.0.0" } } }

Design Tokens

Configure design token generation:

json
{ "designTokens": { "input": "./lib/design-tokens.ts", // Input tokens file "output": "./styles/tokens.css", // Output file "format": "css", // Output format (css, scss, ts, json) "watch": false, // Watch for changes "themes": ["light", "dark"], // Available themes "customProperties": true, // Generate CSS custom properties "compress": true, // Minify output "sourcemap": false // Generate source maps } }

Components

Configure component generation settings:

json
{ "components": { "directory": "./components/ui", // Output directory "prefix": "forsure-", // Component name prefix "typescript": true, // Generate TypeScript files "test": true, // Generate test files "storybook": true, // Generate Storybook stories "defaultExports": true, // Use default exports "cssModules": false, // Use CSS modules "propTypes": false, // Generate PropTypes (JS) "forwardRef": true, // Forward refs in components "memo": false // Wrap components in React.memo } }

Environment-Specific Configuration

You can have different configurations for different environments:

json
{ // Base configuration "defaultOutput": "./output", "templates": { "defaultTemplate": "basic" }, // Environment-specific overrides "environments": { "development": { "files": { "overwriteExisting": true }, "development": { "port": 3001, "verbose": true } }, "production": { "build": { "minify": true, "sourcemap": false }, "files": { "overwriteExisting": false } }, "test": { "testing": { "coverage": true, "coverageThreshold": 90 } } } }

Use the FORSURE_ENV environment variable to specify which environment to use:

bash
export FORSURE_ENV=production forsure generate project.forsure

Configuration Precedence

The ForSure CLI loads configuration in the following order (later options override earlier ones):

  1. Built-in defaults
  2. Global configuration file (~/.forsurerc.json)
  3. Project configuration file (.forsurerc.json)
  4. Environment-specific configuration
  5. Command-line options
  6. Environment variables

Validation

You can validate your configuration file:

bash
forsure config validate forsure config validate --file ./custom-config.json

Common validation errors and their solutions:

Invalid JSON

Check for syntax errors in your configuration file

Unknown property

Remove or rename invalid configuration properties

Invalid path

Ensure all file paths exist and are accessible

Configuration Templates

ForSure provides pre-defined configuration templates for common setups:

React Project
bash
forsure config init --template react

Optimized for React projects with TypeScript and testing

Next.js Project
bash
forsure config init --template nextjs

Configured for Next.js with app router and design system

Node.js API
bash
forsure config init --template node-api

Set up for Node.js API projects with Express/Fastify

Design System
bash
forsure config init --template design-system

Optimized for design system development with Storybook

Next Steps

Learn more about using the ForSure CLI:

  • CLI Options Reference →
  • Back to CLI Reference →
  • See practical examples →