Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tzuyi0817/coding-standards

Vue3 starter template w/ tests and CI.
https://github.com/tzuyi0817/coding-standards

msw playwright tailwindcss testing-library-vue vite vitest vue3-typescript

Last synced: about 1 month ago
JSON representation

Vue3 starter template w/ tests and CI.

Awesome Lists containing this project

README

        

# Vue3 Coding Standards

## Features

- Vue 3
- Pnpm 9
- Vite 5
- [Pinia](https://pinia.vuejs.org/) store
- [pinia-plugin-persistedstate](https://www.npmjs.com/package/pinia-plugin-persistedstate)
- Routing using [vue-router 4](https://router.vuejs.org/)
- TypeScript 5
- Axios
- Tailwind CSS 3
- Vue-i18n 9
- PostCSS 8 w/ `postcss-nesting` plugin
- [Cssnano](https://cssnano.github.io/cssnano/) for minimizing production CSS
- [Postcss-pxtorem](https://www.npmjs.com/package/postcss-pxtorem) generates rem units from pixel units
- [Vite-plugin-svg-icons](https://github.com/vbenjs/vite-plugin-svg-icons) generate svg sprite map
- [Unplugin-vue-components](https://www.npmjs.com/package/unplugin-vue-components) auto importing for common components
- Eslint
- [@component-hook/eslint-plugin](https://www.npmjs.com/package/@component-hook/eslint-plugin?activeTab=readme)
- Prettier
- [Husky](https://www.npmjs.com/package/husky) to improves commits
- if encounter npx: command not found, can execute `ln -s $(which npx) /usr/local/bin/npx` in zsh
- [commitlint](https://commitlint.js.org/#/) checks if your commit messages meet the conventional commit format
- [lint-staged](https://github.com/okonet/lint-staged) filter files checked by pre commit lint
- Alias `@` to `/src`
- Mock use [msw](https://mswjs.io/)
- `npx msw init ./public`
- Unit test use [Vitest](https://vitest.dev/) + [Testing Library](https://testing-library.com/)
- [jsdom](https://www.npmjs.com/package/jsdom)
- [@vitest/coverage-v8](https://vitest.dev/guide/coverage.html)
- [@testing-library/jest-dom](https://testing-library.com/docs/ecosystem-jest-dom/)
- [@testing-library/vue](https://testing-library.com/docs/vue-testing-library/intro/)
- [@testing-library/user-event](https://testing-library.com/docs/ecosystem-user-event/)
- E2E test use [playwright](https://playwright.dev/)
- [Rollup-plugin-visualizer](https://github.com/btd/rollup-plugin-visualizer) visualize and analyze your Rollup bundle to see which modules are taking up space
- Predefined and fully typed global variables:
- `VITE_APP_VERSION` is read from `package.json` version at build time
- `VITE_APP_BUILD_EPOCH` is populated as `new Date().getTime()` at build time
- Github workflows
- ci - on workflow call and dispatch
- deploy - on push main branch
- preview - on pull request
- Gitlab CI
- run tests - on branches, merge request and manual

## Project Files

```text
src/
├── __tests__/
│ ├── __mocks__/
│ ├── setup/
│ │ └── unitTest.ts
│ ├── e2e/*
│ └── unit/*
├── apis/*
├── assets/*
│ └── images/
│ └── svgIcons
│ └── vue.svg
├── components/
│ ├── common/
│ │ └── SvgIcon.vue
│ └── indexPage/
│ └── HelloWorld.vue
├── configs/*
├── hooks/*
├── locales/
│ ├── en-US.json
│ └── zh-CN.json
├── mocks/
│ ├── handlers/*
│ │ ├── apis/*
│ │ └── index.ts
│ │── browser.ts
│ └── server.ts
├── pages/
│ └── IndexPage.vue
├── plugins/
│ └── i18n.ts
├── router/
│ └── index.ts
├── stores/
│ ├── modules
│ │ └── config.ts
│ └── index.ts
├── styles/
│ ├── common/
| │ ├── all.postcss
| │ └── button.postcss
│ ├── index.postcss
│ └── tailwind.postcss
├── types/*
├── utils/*
├── App.vue
├── vite-env.d.ts
└── main.ts
```