The template system provides the core functionality for generating TypeScript projects with configurable options and block-based architecture.
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 executionFunction 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"
}
});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;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 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"