初始化项目
初始化-pnmp[根据自己需要, npm或者yarn都可以,包管理这里不做限制]
包管理器 pnmp, 做包的初始化配置
pnpm init
安装依赖
pnpm i vite -D
运行项目
启动 Vite 的时候使用 npx。这是一个 Npm5.2 新增加的命令,用于执行软件包中的可执行文件
本地新建一个index.html入口
npx vite
Vite 默认只能支持 TS 代码。而 Vue 的模板需要在编译阶段转换为 Typescript 代码 (渲染函数)才可以运行。Vue 插件不但提供了模板的编译,同时还支持 Vue 单文件 (SFC) 组件的编译
可以通过安装 Vite 的 Vue 插件实现
pnpm i vuepnpm i @vitejs/plugin-vue -D
开始项目工程化配置
自定义组件-h函数- vue支持
import { defineComponent, h } from "vue";//之所以使用h函数,因为 Vue3.0 默认的包是不支持模板编译功能的。也就是说, template 语法现在还不能用。在 Vue3.0 中编译功能推荐在构建阶段完成,而不是放到浏览器中运行export default defineComponent({name: "SButton",// template:'<button>MyButton</button>'render() {return h("button", null, "MyButton");},});
自定义组件-SFC组件-template模板编译-@vitejs/plugin-vue
<template><button>SFC Button</button></template><script lang="ts">export default {name: "SFCButton",};</script>
自定义组件-JSX组件支持- @vitejs/plugin-vue-jsx
import { defineComponent, h } from "vue";export default defineComponent({name: "JSXButton",render() {return <button>JSX Button</button>;},});
配置组件入口
import MyButton from "./button";import SFCButton from "./SFCButton.vue"; // 关于ts类型警告,通过.d.ts声明文件去除警告import JSXButton from "./JSXButton";import { App } from "vue";// 导出单独组件export { MyButton, SFCButton, JSXButton };// 编写一个插件,实现一个install方法export default {install(app: App): void {app.component(MyButton.name, MyButton);app.component(SFCButton.name, SFCButton);app.component(JSXButton.name, JSXButton);},};
vite配置
const rollupOptions = {external: ["vue", "vue-router"],output: {globals: {vue: "Vue",},},};export default defineConfig({...// 添加库模式配置build: {rollupOptions,minify: false,lib: {entry: "./src/entry.ts",name: "WebkuborUI",fileName: (format) => `webkubor-ui.${format}.js`,// 导出模块格式formats: ["es", "umd", "iife"], //3.0之前版本是["esm", "umd", "iife"]},},})
设置快捷命令-script
"scripts": {"serve": "vite","build": "vite build"},
测试打包

那么这三个打包导出方式是什么呢
测试 打开路径: http://localhost:5173/demo/esm/index.html
pnpm run dev

