Quickstart-friendly TypeScript template with comprehensive, configurable, opinionated tooling
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
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"Install with Tessl CLI
npx tessl i tessl/npm-create-typescript-app