This template should help get you started developing with Vue 3 in Vite.
- Vue 3
- TypeScript because why not?
- Vite for development and production builds
- VueUse A Collection of Vue Composition Utilities
- Pinia State Management
- Storybook UI Component Development Environment
- see the Storybook Docs on how to write stories and document your components.
- Testing see the Testing section for more information.
- Vitest
- @storybook/testing-library
- @storybook/testing-vue3
- @testing-library/vue
- @pinia/testing
- Cypress for end-to-end tests
- Github Actions for CI/CD workflows.
- SCSS/SASS with Dart Sass
This project requires node.js to be installed. This project uses volta to manage node versions.
To install volta run the following command in the terminal.
curl https://get.volta.sh | bashVSCode + Volar (and disable Vetur) + TypeScript Vue Plugin (Volar).
TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need TypeScript Vue Plugin (Volar) to make the TypeScript language service aware of .vue types.
If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a Take Over Mode that is more performant. You can enable it by the following steps:
- Disable the built-in TypeScript Extension
- Run
Extensions: Show Built-in Extensionsfrom VSCode's command palette - Find
TypeScript and JavaScript Language Features, right click and selectDisable (Workspace)
- Run
- Reload the VSCode window by running
Developer: Reload Windowfrom the command palette.
See Vite Configuration Reference.
npm installnpm run devnpm run buildRun Unit Tests with Vitest
npm run test:unitRun End-to-End Tests with Cypress
npm run test:e2e:devThis runs the end-to-end tests against the Vite development server. It is much faster than the production build.
But it's still recommended to test the production build with test:e2e before deploying (e.g. in CI environments):
npm run build
npm run test:e2eLint with ESLint
npm run lintThere are multiple ways to test your components, stories and stores.
This project uses:
- Vitest to run the unit tests.
- @storybook/testing-vue3 and @testing-library/vue to test the components and stories.
- @pinia/testing to test and mock the
piniastores. - Alternatively you can use @storybook/testing-library to test UI interactions within the stories.
Read the docs for Vue Testing Library and how to use it with Storybook.
Vue Testing Library is a very light-weight solution for testing Vue components. It provides light utility functions on top of @vue/test-utils, in a way that encourages better testing practices.
Composition allows you to browse components from any Storybook accessible via URL inside your local Storybook. You can compose any Storybook published online or running locally no matter the view layer, tech stack, or dependencies.
see: https://storybook.js.org/docs/sharing/storybook-composition