Version 0.1.0. Bin: create-taman. Node >=22.18.0. See Create a project for the user flow.
Library exports
The package's "." export is src/index.ts (the generate API). The CLI entry is dist/bin.mjs.
From packages/create-taman/src:
parseCliArgs(argv: string[]): CliArgs
defaultRef(): string // `create-taman@${packageJson.version}`
main(argv?: string[]): Promise<void>
generateProject(options: {
dir: string
names: GenerateNames
source: { type: 'github'; ref: string } | { type: 'local'; repo: string }
git: boolean
}): Promise<{ warnings: string[] }>
validateName(value: string, label: string): string | undefined
normalizeScope(value: string): string // strips @ and trailing /
toNames(name: string, scope: string): GenerateNames
GenerateNames: { name, scope, nameSnake } where nameSnake is name.replace(/[^a-z0-9]+/g, '_').
Template repo constant: github:vinicunca/taman. GitHub fetch uses giget force + forceClean. Local --from uses git archive HEAD.
Manifest (template.manifest.ts)
interface TemplateManifest {
remove: Array<string>;
workspacePackages: Array<string>;
scripts: Array<string>;
scopeFrom: string; // '@taman/'
rename: Array<{ file: string; from: string; to: string }>;
}
to may contain {{name}}, {{scope}}, {{nameSnake}}. Explicit renames run before the scope rename. Unmatched remove globs or missing workspace package entries abort generation.
Name rules
/^[a-z0-9][\w.-]*$/ and no uppercase. Max 214 characters. Empty is rejected.
Git commit
git init -q, git add -A, git commit -q --no-verify -m 'Initial commit from create-taman'. If user.email is unset, -c user.name=create-taman -c user.email=create-taman@users.noreply.github.com. Failures become warnings; the project stays.