Vite打包组件库

动机

去年使用vue3 + TSX封装组件,结果卡在了打包上,直到最近发现,vite提供了tsx的打包插件。

组件准备

手把手创建Vue3组件库

packages/index.ts中引入相关的组件、工具库、样式。

Vite配置

// bin/build.js
// node包,commonjs规范
const path = require('path')
const { defineConfig, build } = require('vite')
const vue = require('@vitejs/plugin-vue') 
const vueJsx = require('@vitejs/plugin-vue-jsx')

// 打包的入口文件
const entryDir = path.resolve(__dirname, '../packages')
// 出口文件夹
const outDir = path.resolve(__dirname, '../lib')
// vite基础配置
const baseConfig = defineConfig({
  configFile: false,
  publicDir: false,
  plugins: [vue(), vueJsx()]
})
// rollup配置
const rollupOptions = {
  // 确保外部化处理那些你不想打包进库的依赖
  external: [
    'vue'
  ],
  output: {
    // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
    global: [
      vue: 'Vue'
    ]
  }
}
// 全量打包构建
const buildAll = async () => {
  await build({
    ...baseConfig,
    build: {
      rollupOptions,
      lib: {
        entry: path.resolve(entryDir, 'index.ts'),
        name: '', // umd的变量名
        fileName: (format) => `index.${format}.js`, // 输出文件名
        formats: ['es', 'umd'],
      },
      outDir
    }
  })
}
const build = async () => {
  await buildAll()
}
build()

pkg#scripts

"scripts": {
  "build:lib": "node ./bin/build.js"
}

声明组件模块

防止typescript中引入module报错
// packages/vue.d.ts
declare module '*.vue' {
  import { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default component
}

1.2k 声望
72 粉丝
0 条评论
推荐阅读
参照Metamask,钱包端实现简易的Dapp浏览器
以react-native@0.71.7环境为例,开发Android应用。MetaMask一键登录示例Demo {代码...} Demo演示流程分析:借助react-native-webview加载Dapp Web;绑定webviewRef实例,便于后续通信;在injectedJavaScriptBefor...

米花儿团儿阅读 672

Vite开发环境搭建
Vite现在可谓是炙手可热,可能很多小伙伴还没有使用过Vite,但是我相信大多数小伙伴已经在使用Vite了,因为是太香了有没有。可能在使用过程中很多东西Vite不是配置好的,并不像Vue-cli配置的很周全,那么今天就说...

Aaron7阅读 5.8k

写一个Vue DevTools,让开发体验飞一会
近年来,人们越来越关注开发者体验 (DX)。工具和框架也一直在努力改进 DX,比如这两年光速发展的Vite。在大多数人的印象中,Vite的特点是快,但是在我看来让它发展迅速并在前端构建工具占据一席之地的主要原因是...

null仔2阅读 933

封面图
Grow Admin 中后台框架简介
Grow Admin是开源的中后台模版,使用目前较新的主流技术栈开发,是一款开箱即用的中台前端/设计解决方案,具有轻松构建规范且美观的系统,丰富的布局模式,具有高可配性,满足您的各类布局需求。

Aaron2阅读 672

封面图
Vele-Admin 一个基于Vue3+Element-Plus的后台管理系统
vele-admin是一个基于 vue3, vite2, element-plus, vuex-module-decorators, vue-router-next, typescript 的后台管理系统

shellingfordly阅读 5.5k评论 1

面试官桀桀一笑:你没做过大文件上传功能?那你回去等通知吧!
本文略长,建议收藏,文末会附上完整前后端代码(vue2&vue3+springboot)凑合算是一套解决方案吧😁😁😁前端vscode大家都有,后端大家需要下载一个idea,搞一下maven,这一点可以请后端同事帮忙对于普通的单个的大文...

水冗水孚2阅读 868

Everright-formEditor低代码拖拉拽的表单编辑器,开源咯!!!
编辑器介绍先来个图,有个初步的认识抱歉,原谅图有点模糊哈github: [链接]demo: [链接]Everright-formEditor是一个基于vue3的可视化编辑器,依赖于element-plus和vant进行开发。内部提供了适配器进行参数转码。...

Liberty_liu2阅读 501

封面图
1.2k 声望
72 粉丝
宣传栏