TypeScript starter template for Node utility library development and npm publishing
vite-vanilla-ts-module — Vite Starter Template
By entwurfhaus
A Vite-based vanilla-ts extended starter template for writing Node utility libraries in TypeScript and publishing to npm.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 2
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Includes and configures husky, vitest, vitest ui, vite, vite-plugin-dts, vite-plugin-eslint, eslint, prettier
commitlint, vite-plugin-progress, @trivago/prettier-plugin-sort-imports are optional dependencies and can be removed as needed
Provides script workflows such as yarn dev, yarn test, yarn test:coverage, yarn build
README explains integration into monorepo frameworks such as turborepo and nx
Licensed under MIT, with a license file included in the repository
Template Details
This template is an extended vanilla-ts starter maintained by entwurfhaus, originally starting from Vite 3.x, targeting the scenario of writing Node utility libraries in TypeScript and quickly completing development and publishing to npm. The repository uses both names vite-vanilla-ts-template-extended and vite-vanilla-ts-module.
The template includes and configures dependencies such as husky, vitest, vitest ui, vite, vite-plugin-dts, vite-plugin-eslint, eslint, and prettier; commitlint, vite-plugin-progress, and @trivago/prettier-plugin-sort-imports are marked as optional and can be removed as needed. The README explains that the purpose of introducing these dependencies includes: quickly building custom Node libraries, facilitating integration into monorepo frameworks such as turborepo and nx, reducing dependency management overhead, providing efficiency features like linting and automatic sorting, and improving the development experience.
In terms of usage flow, first run yarn and yarn prepare to install dependencies and initialize husky, then add a pre-commit hook via npx husky add (executing yarn build and yarn prettier), and optionally use commitlint to enforce conventional commit messages. Testing uses yarn test or yarn test:coverage to generate coverage reports; yarn dev opens index.html at http://localhost:5174, which contains shortcut links to stats.html and the coverage index.html; yarn build outputs to the dist directory. For publishing, run npm login and npm publish. The README mentions that the project uses typedoc to generate the docs directory and provides an example site link.
Limitations to note: the README does not provide specific framework version numbers, nor does it state performance or production readiness; when encountering build or type errors, the README suggests checking the main, module, typings, files fields in package.json, tsconfig.json (such as allowJs), and dependency versions (especially vite). Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses.
Is it right for your project?
Use Cases
- Writing Node utility libraries in TypeScript and preparing to publish to npm
- Configuring development workflows such as husky pre-commit, eslint, prettier for custom Node packages
- Writing tests with vitest and vitest ui and generating coverage reports
- Integrating build artifacts into monorepo frameworks such as turborepo or nx
- Generating type declarations via vite-plugin-dts and outputting to the dist directory
Suitable For
- TypeScript developers who need to quickly set up a Node utility library project skeleton
- Teams looking to unify linting, formatting, and commit conventions
- Individuals or teams planning to publish self-built packages to npm
- Developers using turborepo or nx to manage multi-package repositories
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Run yarn to install dependencies, then run yarn prepare to initialize husky
- 2
Add pre-commit hooks with npx husky add .husky/pre-commit "yarn build" and npx husky add .husky/pre-commit "yarn prettier"
- 3
To enforce commit messages, create commitlint.config.js and extend @commitlint/config-conventional
- 4
yarn dev opens index.html at http://localhost:5174, yarn build outputs to the dist directory
- 5
Before publishing, run npm login and npm publish; when encountering build or type errors, check package.json, tsconfig.json, and dependency versions
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis entry covers the free version under the MIT license in a public repository; the free scope is the code of this version and does not imply that external services or third-party assets are free.
Must comply with when using
- Free use, modification, commercial use, and distribution of this version's code are permitted.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Publishing to npm requires an npm account and login, which is an external service account requirement; the template itself does not provide an npm publishing service.
- Integration into turborepo or nx is an optional use case and requires installing and configuring these external monorepo tools yourself; the template does not include them.
- commitlint is an optional dependency and can be removed if you do not need to enforce conventional commit conventions.
- vite-plugin-progress is an optional dependency and can be removed if you do not need a terminal progress bar.
- @trivago/prettier-plugin-sort-imports is an optional dependency for automatically sorting imports and requires you to set sorting rules yourself.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur additional charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
npm login npm publish
Original README
Easily integrate the built custom `node` library, into any monorepo framework - primarily `turborepo` and `nx`.
Original README
commitlint](https://commitlint.js.org/guides/getting-started.html) - optional, remove if yourself / team does not require enforcing conventional commits.
Original README
vite-plugin-progress](https://github.com/jeddygong/vite-plugin-progress) - optional, remove if yourself / team does not require
Original README
https://github.com/entwurfhaus/vite-vanilla-ts-module/blob/develop/LICENSE.mdhttps://github.com/entwurfhaus/vite-vanilla-ts-module/blob/develop/README.md@trivago/prettier-plugin-sort-imports](https://github.com/trivago/prettier-plugin-sort-imports) - optional, auto-sort your import order in each file, set your own "sort rules".
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-03. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 77 / 100
- Technologies
- Vite · HTML
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2024-10-13
- Screenshot last checked
- 2026-10-03
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Vite as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: [email protected] · 2026-10-04
Inspect the recorded source material
SHA-256: 2e7c59254fbfad2aeec8ed25448a80756d2b43d999147ace0137672c015f8573
2026-10-03T18:54:38.898Z
Source file / repository# vite-vanilla-ts-template-extended (AKA `vite-vanilla-ts-module`)
<p align="center">
<img alt="license" src="https://img.shields.io/github/license/entwurfhaus/vite-vanilla-ts-module?style=flat-square" />
<img alt="release" src="https://img.shields.io/github/v/tag/entwurfhaus/vite-vanilla-ts-module?label=release&style=flat-square" />
<img alt="github stars" src="https://img.shields.io/github/stars/entwurfhaus/vite-vanilla-ts-module?style=flat-square" />
<img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/entwurfhaus/vite-vanilla-ts-module/develop.yml?style=flat-square" />
</p>
<p align="center">
<img alt="bundlephobia" src="https://img.shields.io/bundlephobia/min/@entwurfhaus/vite-vanilla-ts-module?style=flat-square" />
<img alt="vulnerabilities" src="https://img.shields.io/snyk/vulnerabilities/npm/@entwurfhaus/vite-vanilla-ts-module?style=flat-square" />
</p>
> Update: If you prefer a minimalist vite-vanilla-ts-template, check out https://github.com/entwurfhaus/vite-vanilla-ts-template.
A starter `vanilla-ts` (extended) template that began with Vite 3.x, prepared for writing `node` utility libraries in `typescript`. This starter is meant to provide rapid `node` package development and publishing onto `npm`.
## What is in this template?
Below are notable dependencies bundled (and configured) in this library template:
1. [husky](https://typicode.github.io/husky/get-started.html)
1. [vitest](https://vitest.dev/)
1. [vitest ui](https://vitest.dev/guide/ui.html)
1. [vite](https://vitejs.dev/guide/)
1. [vite-plugin-dts](https://github.com/qmhc/vite-plugin-dts)
1. [vite-plugin-eslint](https://github.com/gxmari007/vite-plugin-eslint)
1. [eslint](https://eslint.org/)
1. [prettier](https://prettier.io/)
### Optional dependencies
And notable optional dependencies, great to use for improved DX etc:
1. [commitlint](https://commitlint.js.org/guides/getting-started.html) - optional, remove if yourself / team does not require enforcing conventional commits.
1. [vite-plugin-progress](https://github.com/jeddygong/vite-plugin-progress) - optional, remove if yourself / team does not require :sparkles: fancy :sparkles: progress bar in terminal.
1. [@trivago/prettier-plugin-sort-imports](https://github.com/trivago/prettier-plugin-sort-imports) - optional, auto-sort your import order in each file, set your own "sort rules".
### Goal of included dependencies
Know that the above dependencies are (mostly) optional, and you may extend or remove them to your preference. The goal of introducing these dependencies as part of the template, is to:
1. Easily build a custom `node` library, fast (with some style).
1. Easily integrate the built custom `node` library, into any monorepo framework - primarily `turborepo` and `nx`.
1. Reduce overhead management of dependencies. For example, you can add [taze](https://github.com/antfu/taze) library.
1. Providing comfort in utilising efficient (linting, auto-sort, etc) productivity features.
1. Improving the overall developer experience (DX) with this template.
## Getting Started
Let's install our dependencies, then pre-setup our `husky` pre-commits:
```bash
yarn
yarn prepare
npx husky add .husky/pre-commit "yarn build"
npx husky add .husky/pre-commit "yarn prettier"
```
Then, your `.husky/pre-commit` file should look like below:
```bash
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
yarn build
yarn prettier
```
And since we introduced [commitlint](https://commitlint.js.org/guides/getting-started.html), we can enforce "conventional commit" messages with `husky`:
```bash
echo "export default { extends: ["@commitlint/config-conventional"] };" > commitlint.config.js
```
## Testing with Vitest
Run `yarn test` or `yarn test:coverage` to produce code coverage report.
The code coverage report will indicate, if all test cases are 100% covered, flawed logic and so on.
## Running `vite`
Run `yarn dev` to open `index.html` via `http://localhost:5174`.
It contains some quick links, to the `stats.html` and coverage `index.html` files.
## Build your package
Run `yarn build`, and check the `dist` folder for the final build output.
> If there are issues with the package, check `package.json` (props `main`, `module`, `typings`, `files` and etc), `tsconfig.json` (such as `allowJs`) and dependency versions (especially `vite`) to narrow down the build or typings errors you're experiencing.
## Publishing
And when ready to publish to `npm`:
```
npm login
npm publish
```
Also, since `typedoc` is used here - this is an example of the generated `docs` folder, see https://vite-vanilla-ts-template-extended.vercel.app.
If you would like to preview an example of how your NPM package is published, take a look at https://entwurfhaus-demo-react-app.vercel.app/ that have this template installed & used.
Explore similar templates
Compare previews and descriptions within the same stack and category.

react-starter-kit
A full-stack SaaS monorepo starter built on Vite and React, with Bun, TypeScript, tRPC, Drizzle ORM, Better Auth, Stripe, and Cloudflare Workers. It includes email OTP, passkey, Google OAuth, organizations, subscription billing, Drizzle migrations, seed scripts, and Terraform infrastructure.
Vite · SaaS

cove
Cove is a minimal TanStack Start starter template maintained by mugnavo, integrating React, TanStack Router/Query, Tailwind CSS, shadcn/ui, Drizzle ORM with PostgreSQL, Better Auth, Vite Plus, and Nitro.
Vite · SaaS

vite-react-boilerplate
A production-ready Vite + React starter template with TypeScript, Tailwind CSS, TanStack Router/Query/Table, Storybook, React Hook Form + Zod, Vitest and Playwright testing, plus Husky/Commitizen/Commitlint commit conventions.
Vite · Starter

react-vite-admin
A backend management starter built on Vite and React, integrating Recoil, React Query, TypeScript, and Axios, with Ant Design-style interface screenshots. Suitable as a starting point for management-side projects, licensed under MIT, with Chinese documentation and common scripts.
Vite · Admin dashboard

typescript-react_best_practices-vite_template
A Vite + React + TypeScript starter template by CodelyTV, preconfigured with Jest and React Testing Library unit tests, Cypress end-to-end tests, ESLint and Prettier using Codely's shared configuration, GitHub Actions workflows, a Makefile, and Sass.
Vite · Starter

cloudflare-starter-kit
A Cloudflare Workers project scaffolding template maintained by kriasoft, using Vite and TypeScript, with three built-in workspaces: api, app, and edge, and preconfigured local testing, multiple environments, and a GitHub Actions deployment workflow.
Vite · Starter
