{"id":13695463,"url":"https://github.com/pdsuwwz/vite-ts-starter","last_synced_at":"2025-04-05T07:06:57.888Z","repository":{"id":37083305,"uuid":"431748848","full_name":"pdsuwwz/vite-ts-starter","owner":"pdsuwwz","description":"🐬 一个轻量级、开箱即用、快速开发 Vue3 (setup)  全家桶 + Vite6 + i18n 路由级国际化 + Element-Plus + UnoCSS + TypeScript + Vuex + Unplugin + ESLint (v9) + Vitest + Scss + StyleLint + Husky + lint-staged 中小型 B 端中后台管理系统的现代开发基础模板框架, 模块化, 持续更新最新技术栈, 更贴近真实项目的脚手架 💪 A template admin built on Vite6 + Vitest + Vue 3 (附示例截图)","archived":false,"fork":false,"pushed_at":"2025-03-10T08:46:09.000Z","size":91690,"stargazers_count":135,"open_issues_count":0,"forks_count":17,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T06:08:21.970Z","etag":null,"topics":["element","element-plus","husky","i18n","lint-staged","plus","router","sass","ui","vue","vue3","vuex"],"latest_commit_sha":null,"homepage":"https://docs-vts.netlify.app/zh","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pdsuwwz.png","metadata":{"files":{"readme":"README-zh.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-25T07:15:07.000Z","updated_at":"2025-03-26T05:57:23.000Z","dependencies_parsed_at":"2023-12-15T11:28:36.051Z","dependency_job_id":"1e8a0563-bf66-4b69-8cc4-58b9484564a4","html_url":"https://github.com/pdsuwwz/vite-ts-starter","commit_stats":{"total_commits":380,"total_committers":3,"mean_commits":"126.66666666666667","dds":"0.45789473684210524","last_synced_commit":"08c53e1df69b68bb3ef9e364f16a37e02fb8a7a3"},"previous_names":[],"tags_count":28,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdsuwwz%2Fvite-ts-starter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdsuwwz%2Fvite-ts-starter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdsuwwz%2Fvite-ts-starter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdsuwwz%2Fvite-ts-starter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pdsuwwz","download_url":"https://codeload.github.com/pdsuwwz/vite-ts-starter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247299832,"owners_count":20916190,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["element","element-plus","husky","i18n","lint-staged","plus","router","sass","ui","vue","vue3","vuex"],"created_at":"2024-08-02T18:00:25.978Z","updated_at":"2025-04-05T07:06:57.852Z","avatar_url":"https://github.com/pdsuwwz.png","language":"Vue","funding_links":[],"categories":["Templates","Get Started"],"sub_categories":["Templates"],"readme":"# vite-ts-starter\n\n中文 | [English](README.md)\n\n[![Deploy](https://github.com/pdsuwwz/vite-ts-starter/workflows/gh-pages/badge.svg)](https://github.com/pdsuwwz/vite-ts-starter/actions/workflows/deploy.yml)\n[![GitHub Workflow Status (branch)](https://img.shields.io/github/actions/workflow/status/pdsuwwz/vite-ts-starter/deploy.yml?branch=main)](https://github.com/pdsuwwz/vite-ts-starter/deployments/activity_log?environment=github-pages)\n[![thanks](https://badgen.net/badge/thanks/♥/pink)](https://github.com/pdsuwwz)\n[![License](https://img.shields.io/github/license/pdsuwwz/vite-ts-starter?color=blue)](https://github.com/pdsuwwz/vite-ts-starter/blob/main/LICENSE)\n\n🐬 A Starter template built on Vite 6.x + Vue 3.x + Element Plus 2.x + TypeScript + Husky + lint-staged.\n\n一个开箱即用，适合快速开发 Vue3 + Vite6 + TS 中小型 B 端后台管理系统的原型模板项目框架，持续更新最新技术栈 💪\n\n[🚀 Live Demo 在线体验](https://pdsuwwz.github.io/vite-ts-starter)\n\n\n## 🌱 不同版本\n目前一共有以下五个不同技术栈的仓库模板在持续维护，请尝试后选择适合自己的模板使用\n\n- 💥 (推荐) [TS + Pinia + 🌐 低耦合(i18n)多语言 Vite6 + Vue3 + TS + Element-Plus2 + vue-i18n@next](https://github.com/pdsuwwz/vue-boilerplate-i18n)\n\n- ⚡️ TS + Pinia 版 [Vite5 + Vue3 + TS + Pinia + Element-Plus2 + useLocale + i18n](https://github.com/pdsuwwz/pinia-starter-ts)\n- ⚡️ JS + Pinia 版 [Vite5 + Vue3 + Pinia + Element-Plus2 + useLocale + i18n](https://github.com/pdsuwwz/vite-pinia-starter)\n\n- ⚡️ TS + Vuex4 版 (当前仓库)[Vite6 + Vue3 + TS + Vuex4 + Element-Plus2 + useLocale + i18n](https://github.com/pdsuwwz/vite-ts-starter)\n- ⚡️ JS + Vuex4 版 [Vite5 + Vue3 + Vuex4 + Element-Plus2 + useLocale + i18n](https://github.com/pdsuwwz/vite-starter)\n\n## 🪄 使用不同的 UI 库\n\n如果更偏好使用 [Naive UI](https://www.naiveui.com/) 作为 UI 库, 这里也为你准备了几个相应的模板项目，可在此基础上进行业务二次开发和定制：\n\n- 🏄‍♂️ [Naive UI 基础模板，集成常用技术栈](https://github.com/pdsuwwz/vite-naive-template)\n- 🗂️ [基于 Naive UI 的 Tab 多页签切换选项卡演示](https://github.com/pdsuwwz/vue3-tab-demo)\n\n\n## 🎉 Features\n\n* 支持 __Vite 6 + Vue 3 + TypeScript__\n* UI 框架: __Element Plus 2.x__\n* 状态管理: __Vuex 4__\n* 代码规范化检测: __Husky + lint-staged__\n* 单元测试框架: ~~__Jest__~~ 升级为 __Vitest__\n* 内置 __ESlint__ 和 __Stylelint__, 可在此基础上扩展你想要的 Lint 配置规范\n* 内置封装了一个**可能比较好用的** Axios , 需要时配合 Vuex Actions 一起食用\n* 封装了 \\\u003cIconFont \\/\u003e 组件, 可直接使用 IconFont 图标\n* 内置全局 **$ModalDialog** 插件, 支持使用 service 式地动态调用此插件来显示任意组件\n* 内置 i18n, 支持到 VueRouter 路由级别切换语言，可编写国际化配置文件及扩展其他语言\n* 路由鉴权已帮你封装好，同时配合 Nprogress, 只需要修改 permission.ts 文件即可\n* 自带一个模块化的组件开发环境，可按照 modules 目录解耦页面组件、路由组件、样式等文件\n* 高度封装但不失灵活，内部抽象出了一个完整的业务流程供你参考，涉及三个核心页面：登录、列表和明细\n* 节省你配置的时间，因此该项目的**轻量化**致使你只需要专心编写自己的业务代码即可\n\n\n## 前置条件\n\n* Vue 3.x\n* Node \u003e= 18.12.x\n* Pnpm 9.x\n* **VS Code 插件 `dbaeumer.vscode-eslint` \u003e= v3.0.5 (pre-release)**\n\n\n## 运行效果截图\n\n\u003cimg width=\"1440\" alt=\"image\" src=\"https://user-images.githubusercontent.com/19891724/154829635-46de24db-e4c5-409f-9fa5-6a9770ace166.png\"\u003e\n\u003cimg width=\"1440\" alt=\"image\" src=\"https://user-images.githubusercontent.com/19891724/154829667-a84787b0-0104-4466-bb9e-9f586be66778.png\"\u003e\n\n\n## 安装和运行\n\n* 安装依赖\n\n```bash\npnpm i\n```\n\n* 本地开发\n\n```bash\npnpm dev\n```\n\n## 单元测试\n\n* 执行单测\n\n```bash\npnpm test\n```\n\n* 执行覆盖率测试\n\n```bash\npnpm test:coverage\n```\n\n## 🌍 国际化 i18n 设置\n\n本项目支持多语言设置，默认语言为 `English`.\n\n### 默认语言配置\n\n\n默认语言通过 [`defaultLanguageLocale`](src/locales/index.ts#L43) 常量设置。要更改默认语言，只需修改此常量的值：\n\n```ts\nexport const defaultLanguageLocale = 'en'\n```\n\n### 扩展支持的语言\n\n\n项目当前支持以下语言，详见代码[src/locales/index.ts](src/locales/index.ts#L13):\n\n```ts\nexport const localesMapping = [\n  {\n    localeCode: 'zh-hans',\n    localeName: '简体中文',\n    localeLang: {...}\n  },\n  {\n    localeCode: 'en',\n    localeName: 'English',\n    localeLang: {...}\n  }\n]\n```\n\n要添加新的语言支持:\n\n  * 在 [`localesMapping`](src/locales/index.ts#L13) 数组中添加新的语言对象\n  * 在 [`src/locales/lang/`](src/locales/lang/) 目录下创建对应的语言文件（如 de.ts 为德语）\n\n    ```\n    ./lang\n    ├── en.ts\n    └── zh-hans.ts\n    ```\n  * 导入并合并 `Element Plus` 语言包和自定义语言文件，确保 UI 组件和自定义内容均被本地化\n\n\n## 💡 提示\n\n* 若 Husky 未生效，可能是由于未完成初始化，尝试执行以下命令进行初始化:\n\n```bash\npnpm run prepare\n```\n\n\n## 😎 Awesome\n\n* [awesome-vite](https://github.com/pdsuwwz/awesome-vite)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdsuwwz%2Fvite-ts-starter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpdsuwwz%2Fvite-ts-starter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdsuwwz%2Fvite-ts-starter/lists"}