创建项目

  1. npm init @vitejs/app
  2. # "dev": "vite", // 启动开发服务器
  3. # "build": "vite build", // 为生产环境构建
  4. # "serve": "vite preview" // 本地预览生产构建产物
  5. npm create vite-app my-project

配置路由

  1. // router/router.js 创建
  2. import { createRouter,createWebHistory } from "vue-router"
  3. const route = [
  4. {path:"Home",name:"Home",component:()=>import("../view/Home.vue")}
  5. ]
  6. const router = createRouter({
  7. history:createWebHistory(),
  8. router
  9. })
  10. export default router
  11. // main.js 修改
  12. import router from "./router/router.js"
  13. createApp(App).use(router).mount("#app")

使用vuex

  1. // store/index.ts
  2. import { createStore } from "vuex";
  3. export default createStore({
  4. state() {
  5. return {
  6. count: 0,
  7. };
  8. },
  9. mutations: {
  10. increment(state) {
  11. state.count++;
  12. },
  13. },
  14. actions: {
  15. increment(context) {
  16. context.commit("increment");
  17. },
  18. },
  19. });
  20. // main.js
  21. import store from "/@/store";
  22. app.use(store);

vite.js 配置文件

  1. // Build 独有配置
  2. 'base': './',
  3. 'mode': 'production',
  4. // 默认值
  5. 'publicDir': 'public',
  6. 'resolve': {
  7. 'alias': [
  8. { find: '/@', replacement: resolve(__dirname, "./src") },
  9. ],
  10. },
  11. 'plugins': [
  12. //https://github.com/anncwb/vite-plugin-style-import/blob/HEAD/README.zh_CN.md
  13. vue({
  14. 'template': {
  15. 'compilerOptions': {
  16. }
  17. },
  18. // \@vicons\antd\SettingOutlined.js
  19. // \@vicons\antd\es\index.js
  20. }), styleImport({
  21. libs: [
  22. {
  23. libraryName: '@vicons/fa',
  24. esModule: true,
  25. resolveStyle: (name) => {
  26. return `@vicons/fa/${name}`;
  27. },
  28. }, {
  29. libraryName: '@vicons/material',
  30. esModule: true,
  31. resolveStyle: (name) => {
  32. let a = name.split("-")
  33. let ar = a.map(str => { return str.trim().toLowerCase().replace(str[0], str[0].toUpperCase()); })
  34. let str = ""
  35. ar.map(itme => { str += itme })
  36. return `@vicons/material/${str}`;
  37. },
  38. resolveComponent: (name) => {
  39. let a = name.split("-")
  40. let ar = a.map(str => { return str.trim().toLowerCase().replace(str[0], str[0].toUpperCase()); })
  41. let str = ""
  42. ar.map(itme => { str += itme })
  43. return `@vicons/material/${str}`;
  44. },
  45. }
  46. ]
  47. })
  48. ],
  49. 'css': {
  50. },
  51. // 'brotliSize': true,
  52. // chunkSizeWarningLimit: 100000,
  53. 'server': {
  54. // 指定服务器主机名
  55. 'host': '',
  56. // 代理规则
  57. 'proxy': {
  58. // 字符串简写写法
  59. '/foo': 'http://localhost:5000/foo',
  60. // 选项写法
  61. '/api': {
  62. 'target': 'http://jsonplaceholder.typicode.com',
  63. 'changeOrigin': true,
  64. 'rewrite': path => path.replace(
  65. /^\/api/,
  66. ''
  67. )
  68. },
  69. // 正则表达式写法
  70. '^/fallback/.*': {
  71. 'target': 'http://jsonplaceholder.typicode.com',
  72. 'changeOrigin': true,
  73. 'rewrite': path => path.replace(
  74. /^\/fallback/,
  75. ''
  76. )
  77. }
  78. }
  79. }

文件路径别名

  1. 'resolve': {
  2. 'alias': [
  3. { find: '/@', replacement: resolve(__dirname, "./src") },
  4. ],
  5. },

插件

ite 插件扩展了设计出色的 Rollup 接口,带有一些 Vite 独有的配置项。因此,你只需要编写一个 Vite 插件,就可以同时为开发环境和生产环境工作。

Rollup文档

Rollup 是一个用于 JavaScript 的模块打包器,它将小段代码编译成更大更复杂的东西,比如库或应用程序。它对包含在 JavaScript 的 ES6 修订版中的代码模块使用新的标准化格式,而不是以前的特殊解决方案,例如 CommonJS 和 AMD。ES 模块让您可以自由无缝地组合您最喜欢的库中最有用的单个功能。这最终在任何地方都可以实现,但是 Rollup 让你今天就可以做到。

按需导入 vite-plugin-style-import

文档地址

  1. // 导入
  2. import styleImport from 'vite-plugin-style-import';
  3. 'plugins': [
  4. vue({ 'template': { 'compilerOptions': { } }, }),
  5. styleImport({
  6. libs: [
  7. // import { Home } from "@vicons/fa";
  8. // \@vicons\antd\es\index.js
  9. // \@vicons\antd\SettingOutlined.js
  10. {
  11. libraryName: '@vicons/fa',
  12. esModule: true,
  13. resolveStyle: (name) => {
  14. return `@vicons/fa/${name}`;
  15. },
  16. }
  17. }
  18. ]
  19. })
  20. ],
参数 类型 默认值 说明
include string 、 RegExp 、(string 、RegExp)[] 、null 、undefined ['**/*.js', '**/*.ts', '**/*.tsx', '**/*.jsx'] 包含的文件格式
exclude string 、RegExp 、 (string 、 RegExp)[] 、 null 、 undefined 'node_modules/**' 排除的的文件/文件夹
libs Lib[] - 要导入的库列表
root string process.cwd() 依赖根目录,如果是 monorepo 项目,需要手动设置
  • vite-plugin-importer 可以按需加载组件和组件样式。
  • vite-plugin-style-import 只能按需加载组件样式。