简介
create-vite-template 是根据 esbuild + commander + ejs 模板烘托进行开发脚手架,用于创建 vite4.x typescript5.x vite 开箱即用模板,致力于打造不同结构,多种生态,开箱即用的脚手架。
支撑各种插件以及不同组件库的可拔插式挑选,来帮助你快速从0建立web运用的脚手架。
目前结构只支撑 vue3.x + Vite4.x 其他结构正在开发中
快速开端
GitHub地址
Node 版别 > 14.18.0
– 快速开端.
npx create-vite-template@latest
仿制代码
– 输入项目名称
Welcome Use Vite To Create Template! v0.23.14
? Project Name ? project-name
仿制代码
– 挑选需求运用的结构 (目前只支撑vue,其他结构正在赶来ing)
目标支撑四套模板
? Choose your framework - Use arrow-keys. Return to submit.
> Vue
React
Nuxt
Next
仿制代码
– 挑选包管理器
可以挑选你需求运用的包管理器 假如挑选 pnpm
yarn
npm
会默认自动装置依靠, 假如挑选第一个 不会自动装置
? Which package manager do you want to use ? - Use arrow-keys. Return to submit.
> Not Install (Manual installation)
Pnpm
Yarn
Npm
仿制代码
– vue全家桶与UI库 ( 部分组件库支撑主题化装备 ELment-plus Naive-ui Ant-design-vue)
支撑多种组件库挑选,以及 eslint prettier vue全家桶挑选
√ Add Vue Router for Single Page Application development? ... No / Yes
√ Add Pinia for state management? ... No / Yes
√ Add ESLint for code quality? ... No / Yes
√ Add Prettier for code formatting? ... No / Yes
? choose UI frameWork - Use arrow-keys. Return to submit.
> Element Plus
Vuetify3
Naive UI
Varlet Pc
Ant Design Vue
DevUI
arco-design
TDesign
Vant
tdesign-mobile-vue
仿制代码
– 是否需求增加支撑组件库主题化装备
? Add theming && layout to your project? This item overrides some of the default configuration No / Yes
仿制代码
– 支撑可挑选的插件
可以挑选多个插件, 对应模板就会提供好您挑选插件的装备文件
? Custorm Your Plugins - Space to select. Return to submit
( ) @vitejs/plugin-vue-jsx
( ) @vitejs/plugin-legacy
( ) vite-plugin-html
( ) unplugin-vue-components
( ) unplugin-auto-import
( ) unplugin-imagemin
( ) unplugin-icons
( ) Unocss
( ) vite-plugin-pwa
( ) ↓ vite-plugin-inspect
仿制代码
– Demo 演示
目前模板支撑插件如下, The supported template presets are:
FrameWork && Language
FrameWork | finish | Feature / Version | finish |
---|---|---|---|
Vite 4 Vue 3 | ✅ | Vue-Router 4.x | ✅ |
Nuxt 3 | ❌ | Pinia 2.x | ✅ |
Vite4 React 18 | ❌ | Eslint 8.x | ✅ |
Nest 13 | ❌ | Prettier 2.7.x | ✅ |
TypeScript 5.x | ✅ |
UI Library && Plugins
UI Library | finish | Feature / Version | finish |
---|---|---|---|
Element-Plus | ✅ | @vitejs/plugin-vue-jsx | ✅ |
Naive-UI | ✅ | @vitejs/plugin-legacy | ✅ |
Vuetify-beta5 | ✅ | vite-plugin-inspect | ✅ |
DevUI | ✅ | rollup-plugin-visualizer | ✅ |
Ant-design-vue | ✅ | unplugin-icons | ✅ |
arco-design | ✅ | vite-plugin-pwa | ✅ |
TDesign | ✅ | unplugin-vue-components | ✅ |
Varlet | ✅ | unplugin-auto-import | ✅ |
tdesign-mobile-vue | ❌ | unocss | ✅ |
Vant | ❌ | vite-plugin-html | ✅ |
– Naive UI 在线体会 – Naive-UI
– Ant Design 在线体会 – Ant-Design-Vue
– Element Plus 在线体会 – Element-Plus
– DevUI
– Arco Design
– T-Design
– Vuetify
– VarLet
支撑 netlify 一键布置
布置在 Netlify
分步布置教程:
- 运用脚手架装置项目,发布到你的 github 上,前往 app.netlify.com/start 新建站点,挑选你新建的项目,将其与
GitHub
帐户衔接。
- 根据装备自动填写好构建命令 单击
Deploy Site
按钮开端布置站点。然后就大功告成啦~
项目难点与未来展望
create-vite-template 创意来自于 x-build, 通过运用 ejs 来进行模板的编译和烘托, 可以高度定制化项目, 对代码层面的细节可以愈加深化, 从而不需求对每一种不同的结构, ui库, 插件进行多套模板的保护
- 增加更多必要功用 例如 布局体系, 做到真实开箱即用!
- 运用 ejs 存在的问题,需求保护 ejs 模板可能你的代码就会变成这样, 假如插件的数量越来越多,耦合的联系越来越复杂,保护的本钱也会更高
import type { Plugin } from 'vite'
import vue from "@vitejs/plugin-vue"
<%- pluginImportStatement %>
<% if (components === 'vuetify') { -%>
import vuetify from 'vite-plugin-vuetify'
<% } -%>
<% if (plugins.indexOf('vueComponents') !== -1) { -%>
import {
<%- ComponentResolver %>
} from "unplugin-vue-components/resolvers"
<% } -%>
仿制代码
- 还有一点就是依靠的更新,由于所有模板都由 ejs 编译, 所以依靠的版别更新只能手动修正,目前做到的是读取装备文件
const elementPlus = {
name: 'element-plus',
version: '^2.3.0',
stableVersion: '2.2.27',
theme: true,
unpluginResolver: 'ElementPlusResolver',
useUnpluginResolver: true,
dev: 'pro'
}
const antDesignVue = {
name: 'ant-design-vue',
version: '^3.2.14',
stableVersion: '3.2.1',
theme: true,
unpluginResolver: 'AntDesignVueResolver',
useUnpluginResolver: false,
dev: 'pro'
}
const naiveUI = {
name: 'naive-ui',
version: '^2.34.3',
stableVersion: '2.31.0',
theme: true,
unpluginResolver: 'NaiveUiResolver',
useUnpluginResolver: true,
dev: 'pro'
}
仿制代码
const jsx = {
name: '@vitejs/plugin-vue-jsx',
version: '^3.0.1',
stableVersion: '^2.0.0',
stateMent: 'import VueJsx from "@vitejs/plugin-vue-jsx"',
dev: 'dev'
}
const legacy = {
name: '@vitejs/plugin-legacy',
version: '^4.0.2',
stableVersion: '^2.0.0',
stateMent: 'import legacy from "@vitejs/plugin-legacy"',
dev: 'dev'
}
const autoImport = {
name: 'unplugin-auto-import',
version: '^0.15.1',
stableVersion: '^0.10.0',
stateMent: 'import AutoImport from "unplugin-auto-import/vite"',
dev: 'dev'
}
仿制代码
所以接下来的开发会在如何下降耦合度,把逻辑抽离到js中,削减模板的复杂程度,用最简略的方法,最终的目标是可以让大家可以快速建立出归于自己或者公司的模板