If you build TypeScript projects regularly, you’ve probably experienced this:
You just want to start a simple project…
But instead you get:
- 30+ config files
- Opinionated architecture
- Framework-specific setup
- Tools you don’t need
- Build complexity before writing code
What should take 10 seconds takes 10 minutes.
The Problem With Most TypeScript Starters
Many templates are built with good intentions.
But they often:
- Assume enterprise-level needs
- Add premature abstraction
- Lock you into tooling choices
- Introduce unnecessary boilerplate
For small libraries, APIs, CLI tools, or experiments, this is overkill.
What I Actually Needed
Most of the time, I just want:
- TypeScript configured correctly
- A clean src/index.ts
- tsx for fast development
- Optional ESLint / Prettier
- ESM or CommonJS choice
- Minimal scripts
No frameworks. No magic.
Just a clean starting point.
So I Built a Minimal CLI
I created ts-package-init. a small TypeScript project initializer focused on simplicity.
It scaffolds:
- Base TypeScript projects
- Libraries
- Backends
- CLI tools
- Monorepos
- Minimal NestJS or Moleculer presets
All with sensible defaults.
Quick Example
npx ts-package-init my-app
cd my-app
npm run dev
That’s it.
You get:
my-app/
package.json
tsconfig.json
src/
index.ts
Clean. Minimal. Ready to build on.
Optional Features
If you need more:
npx ts-package-init api --preset backend --eslint --prettier --esm
You can:
- Enable ESLint
- Add Prettier
- Use ESM
- Select package manager
- Skip install
- Use interactive mode
But nothing is forced.
Design Philosophy
The goal is not to compete with full frameworks.
It’s to:
- Start fast
- Avoid unnecessary complexity
- Keep structure predictable
- Let you scale intentionally
Minimal first. Add complexity later.
v1.0.0
The core scaffolding logic is now stable.
Future improvements will focus on:
- Developer experience
- Preset refinement
- Performance
- Real-world feedback
Try It
GitHub:
https://github.com/yourusername/ts-package-init
npm:
https://www.npmjs.com/package/ts-package-init
If you regularly spin up TypeScript projects, I’d genuinely appreciate feedback.
Top comments (0)