or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

blocks.mdcli.mdindex.mdpresets.mdtemplate-system.mdtypes.md
tile.json

template-system.mddocs/

Template System

The template system provides the core functionality for generating TypeScript projects with configurable options and block-based architecture.

Capabilities

Template Object

The main template configuration object created by bingo-stratum that defines the complete project generation template.

/**
 * Main template configuration for Create TypeScript App
 * Built using bingo-stratum template system
 */
const template: Template;

Usage:

import { template } from "create-typescript-app";

// Template can be used with bingo-stratum's template runner
// or consumed programmatically for custom template execution

Configuration Creation

Function to create template configuration with custom options and settings.

/**
 * Creates configuration for the Create TypeScript App template
 * @param options - Base configuration options for the project
 * @returns Template configuration object
 */
function createConfig(options: BaseOptions): TemplateConfig;

Usage:

import { createConfig } from "create-typescript-app";

const config = createConfig({
  directory: "./my-awesome-project",
  title: "My Awesome Project", 
  repository: "my-awesome-project",
  owner: "github-username",
  description: "An awesome TypeScript project",
  preset: "common",
  node: {
    minimum: "20.19.0",
    pinned: "24.3.0"
  }
});

Base Template Configuration

Core base configuration object that provides the foundation for all template generation.

/**
 * Core base configuration using createBase from bingo-stratum
 * Provides foundation for template generation with comprehensive options
 */
const base: BaseTemplate;

Base Options Interface

Complete configuration interface defining all available options for project generation.

/**
 * Complete base options interface with optional preset field
 */
interface BaseOptions extends BaseOptionsFor<typeof base> {
  /** Optional preset name to apply predefined block combinations */
  preset?: string;
  
  // Core Project Configuration
  /** Directory to create the repository in */
  directory: string;
  /** 'Title Case' title for the repository */
  title: string;
  /** 'kebab-case' or 'PascalCase' title of the repository */
  repository: string;
  /** Organization or user owning the repository */
  owner: string;
  /** 'Sentence case.' description of the repository */
  description?: string;

  // Author and Contact Information  
  /** Username on npm to publish packages under */
  author?: string;
  /** Email address for contact in docs and packages */
  email?: string | { github: string; npm: string };

  // Package Configuration
  /** npm publish access level */
  access?: "public" | "restricted";
  /** Value for package.json bin property */
  bin?: string | Record<string, string>;
  /** package.json modules type */
  type?: "commonjs" | "module";
  /** Package version for package.json */
  version?: string;

  // Node.js Configuration
  /** Node.js engine version requirements */
  node?: { minimum: string; pinned?: string };

  // Documentation and Metadata
  /** Decorative emoji for descriptions and docs */
  emoji?: string;
  /** Logo configuration for README.md */
  logo?: { alt: string; src: string; height?: number; width?: number };
  /** Keywords for package.json */
  keywords?: string[];
  /** GitHub funding configuration */
  funding?: string;

  // Advanced Configuration
  /** AllContributors contributors configuration */
  contributors?: Contributor[];
  /** Additional documentation configuration */
  documentation?: Documentation;
  /** Contribution guide link */
  guide?: { href: string; title: string };
  /** Existing GitHub repository labels */
  existingLabels?: Array<{ color: string; description: string; name: string }>;
  /** Additional package.json properties */
  packageData?: object;
  /** pnpm version for packageManager field */
  pnpm?: string;
  /** GitHub branch ruleset ID */
  rulesetId?: string;
  /** Additional CSpell dictionary words */
  words?: string[];
  /** GitHub Actions workflow versions */
  workflowsVersions?: WorkflowsVersions;
}

Example Usage:

import type { BaseOptions } from "create-typescript-app";

const options: BaseOptions = {
  directory: "./my-library",
  title: "My TypeScript Library",
  repository: "my-typescript-library", 
  owner: "my-organization",
  description: "A comprehensive TypeScript library for data processing.",
  author: "my-npm-username",
  email: "developer@example.com",
  access: "public",
  node: {
    minimum: "20.19.0",
    pinned: "24.3.0"
  },
  keywords: ["typescript", "library", "data"],
  preset: "everything"
};

Default Configuration

Default values used throughout the template system for Node.js versions and other settings.

/**
 * Default configuration values used throughout the system
 */
const defaults: {
  node: {
    /** Default minimum Node.js version */
    minimum: "20.19.0";
    /** Default pinned Node.js version for development */
    pinned: "24.3.0";
  };
};

Usage:

import { defaults } from "create-typescript-app";

console.log(defaults.node.minimum); // "20.19.0"
console.log(defaults.node.pinned);   // "24.3.0"