create-pure-ts
v1.0.0
Published
Professional TypeScript scaffolding CLI with Biome, Vitest, and Husky support
Maintainers
Readme
⚡️ create-pure-ts
The ultimate production-ready TypeScript scaffolder.
Zero bloat. Pinned dependencies. Modern defaults.
🚀 Why pure-ts?
Most starter templates are either outdated, too complex, or permissive. pure-ts is opinionated and designed for long-term stability.
- 🔒 Deterministic: All dependency versions are hard-pinned (no
^or~). The build that works today will work in 2027. - 🧠 Smart: Automatically detects the latest stable Node.js LTS and Bleeding Edge versions.
- ⚡️ Fast: Supports Biome (Rust-based toolchain) for instant linting & formatting.
- 🛡 Strict:
tsconfig.jsonset tostrictestsettings (NodeNextmodules,verbatimModuleSyntax,noEmitOnError). - 🛠 Flexible: Choose your stack: Biome vs ESLint, Vitest, Zod, Husky.
📦 Usage
You don't need to install anything globally. Just run:
Using pnpm (Recommended)
pnpm create pure-tsUsing npx
npx pure-tsUsing bun
bun create pure-ts🛠 Features & Stack
When you run the CLI, you get a fully configured project with:
| Category | Technology | Why? |
| :--- | :--- | :--- |
| Runtime | Node.js | Auto-detects latest LTS and Current versions via API. |
| Language | TypeScript 5.7+ | Configured with NodeNext for modern ESM support. |
| Linter | Biome (Default) | 35x faster than ESLint. Handles formatting & linting. |
| Alt. Linter | ESLint 9 | Flat Config (eslint.config.js) + Prettier support. |
| Tests | Vitest (Optional) | Native ESM support, faster than Jest. |
| Validation | Zod (Optional) | Runtime schema validation boilerplate included. |
| Git Hooks | Husky (Optional) | Pre-configured lint-staged for clean commits. |
📂 Generated Structure
Your project will look clean and professional immediately:
my-app/
├── .vscode/ # Recommended extensions settings
├── src/
│ ├── index.ts # Entry point with Env validation example
│ └── index.spec.ts # (If Vitest selected)
├── .gitignore
├── biome.json # (Or eslint.config.js)
├── package.json # Clean scripts, pinned versions
├── tsconfig.json # Production-ready strict config
└── README.md⚙️ Philosophy
1. No "Caret" Ranges (^)
We strictly pin dependencies (e.g., "typescript": "5.7.3" instead of "^5.7.3").
Reason: Supply chain security and build reproducibility. We believe a CI/CD pipeline should never break because a sub-dependency released a patch update.
2. NodeNext Modules
We force moduleResolution: "NodeNext".
Reason: The ecosystem has moved to ESM. This ensures your code works correctly with modern libraries and Top-Level Await.
3. Biome First
We prioritize Biome over ESLint. Reason: It reduces dev-dependencies by 50% and speeds up CI pipelines significantly.
🤝 Contributing
Issues and Pull Requests are welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
