Simple, opinionated, fully typed, and production-ready project template for Vite.
This template is practical and batteries included but not overly complex or bloated. Also explicit configuration over magic; it should be easy to understand how everything works, strip out anything you don't need, and fast to modify things to your needs.
Includes plenty of examples and documentation of how to do things but minimal cruft to delete to get you going.
Please check out the homepage for full docs. A detailed changelog is available. This repository is also mirrored on GitLab.
- Vue 3
- Pinia store (fully typed Vuex store is available up to template versions 1.13)
- Routing using vue-router 4
- TypeScript 5
- Fully typed components configured in templates as well
- Automatic package and component imports w/ unplugin-auto-import and unplugin-vue-components
- Tailwind CSS 3 w/ following plugins and configuration preinstalled:
@tailwindcss/aspect-ratio
@tailwindcss/typography
@tailwindcss/forms
- @egoist/tailwindcss-icons
- PostCSS 8 w/
postcss-nesting
plugin andcssnano
for minimizing production CSS - Eslint 9 w/ flat config
- Prettier
- EditorConfig
- Recommended settings and configs for VSCode
- Alias
@
to<project_root>/src
- Predefined and fully typed global variables:
VITE_APP_VERSION
is read frompackage.json
version at build timeVITE_APP_BUILD_EPOCH
is populated asnew Date().getTime()
at build time
- Comprehensive testing setup (w/ CI integration):
- Vitest for unit and component testing with code coverage
- Playwright for E2E testing
- GitHub workflows
- Renovatebot for keeping up with dependencies
- Automated unit + component tests
- Automated e2e tests
- Coverage reporting in PR comments (example)
- GitLab CI config available up to template versions 2.x
- Vercel deployment configuration included
- Follow @uninen on Twitter
- Read my continuously updating learnings from Vite / Vue / TypeScript and other Web development topics from my Today I Learned site
Contributions are welcome! Please follow the code of conduct when interacting with others.