从0搭建Vue3组件库(五): 如何使用Vite打包组件库

这篇具有很好参考价值的文章主要介绍了从0搭建Vue3组件库(五): 如何使用Vite打包组件库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇文章将介绍如何使用 vite 打包我们的组件库,同时告诉大家如何使用插件让打包后的文件自动生成声明文件(*.d.ts)
打包配置
vite 专门提供了库模式的打包方式,配置其实非常简单,首先全局安装 vite 以及@vitejs/plugin-vue
pnpm add vite @vitejs/plugin-vue -D -w

在 components 文件下新建vite.config.ts配置文件
import { defineConfig } from “vite”;
import vue from “@vitejs/plugin-vue”;
export default defineConfig({
build: {
//打包后文件目录
outDir: “es”,
//压缩
minify: false,
rollupOptions: {
//忽略打包vue文件
external: [“vue”],
//input: [“index.ts”],
output: {
globals: {
vue: “Vue”,
},
dir: “dist”,
},
},
lib: {
entry: “./index.ts”,
name: “easyest”,
fileName: “easyest”,
formats: [“es”, “umd”, “cjs”],
},
},
plugins: [vue()],
});

然后在 components/package.json 添加打包命令scripts
“scripts”: {
“build”: “vite build”
},

执行pnpm run build
vite打包命令,Vite+TypeScript从零搭建Vue3组件库,vue.js,javascript,前端

同时生成了打包后的 dist 文件
vite打包命令,Vite+TypeScript从零搭建Vue3组件库,vue.js,javascript,前端

但是这种打包方式最终会将整个组件库打包到一个文件中,并且样式文件也不能按需加载,所以我们需要修改一下配置让打包后的结构和我们开发的结构一致,如下配置我们将打包后的文件放入 easyest 目录下,因为后续发布组件库的名字就是 easyest,当然这个命名大家可以随意
import { defineConfig } from “vite”;
import vue from “@vitejs/plugin-vue”;
export default defineConfig({
build: {
//打包文件目录
outDir: “es”,
//压缩
//minify: false,
rollupOptions: {
//忽略打包vue文件
external: [“vue”],
input: [“index.ts”],
output: [
{
//打包格式
format: “es”,
//打包后文件名
entryFileNames: “[name].mjs”,
//让打包目录和我们目录对应
preserveModules: true,
exports: “named”,
//配置打包根目录
dir: “…/easyest/es”,
},
{
//打包格式
format: “cjs”,
//打包后文件名
entryFileNames: “[name].js”,
//让打包目录和我们目录对应
preserveModules: true,
exports: “named”,
//配置打包根目录
dir: “…/easyest/lib”,
},
],
},
lib: {
entry: “./index.ts”,
},
},
plugins: [vue()],
});

执行pnpm run build,此时生成打包后的文件目录如下
vite打包命令,Vite+TypeScript从零搭建Vue3组件库,vue.js,javascript,前端

但是此时的所有样式文件还是会统一打包到 style.css 中,还是不能进行样式的按需加载,所以接下来我们将让 vite 不打包样式文件,样式文件后续单独进行打包。
声明文件
到这里其实打包的组件库只能给 js 项目使用,在 ts 项目下运行会出现一些错误,而且使用的时候还会失去代码提示功能,这样的话我们就失去了用 ts 开发组件库的意义了。所以我们需要在打包的库里加入声明文件(.d.ts)。
安装vite-plugin-dts,注意版本最好一致
pnpm add vite-plugin-dts@1.4.1 -D -w

在vite.config.ts引入,注意这里同时添加了组件命名插件DefineOptions(上篇文章提到过,注意这个要写在dts后面,源码中可能有误)
import { defineConfig } from “vite”;
import vue from “@vitejs/plugin-vue”;
import dts from “vite-plugin-dts”;
import DefineOptions from “unplugin-vue-define-options/vite”;
export default defineConfig({
plugins: [
vue(),
dts({
entryRoot: “./src”,
outputDir: [“…/easyest/es/src”, “…/easyest/lib/src”],
//指定使用的tsconfig.json为我们整个项目根目录下,如果不配置,你也可以在components下新建tsconfig.json
tsConfigFilePath: “…/…/tsconfig.json”,
}),
DefineOptions(),

],
});

再次打包就会发现打包后文件中出现了我们需要的声明文件
vite打包命令,Vite+TypeScript从零搭建Vue3组件库,vue.js,javascript,前端

其实现在大部分前端构建脚手架都支持 esmodule 了,而 esmodule 本身就支持按需加载,所以说组件库打包后的 es 格式它本身自带 treeShaking,而不需要额外配置按需引入。后面我们要做的则是让样式文件也支持按需引入,敬请期待。文章来源地址https://www.toymoban.com/news/detail-819518.html

到了这里,关于从0搭建Vue3组件库(五): 如何使用Vite打包组件库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3+Vite+Element-plus搭建组件库并使用Vitepress编辑组件库文档且发布到 npm并且部署 github pages(vitepress文档渲染.vue组件-推荐使用第二种)

    可以参考我之前发布的vite快速搭建vue3项目文章来创建;也可以直接使用我开源Vue3.2+Ts+Vite3+Pinia+Element-Plus模板wocwin-admin 以下我以 wocwin-admin 项目为例 当前目录结构如下 1、编辑 packages/table/index.ts,实现组件的导出 2、编辑 packages/index.ts 文件,实现组件的全局注册 1、安装vite

    2024年02月13日
    浏览(157)
  • 02_使用Vite搭建Vue3项目

    首先插件添加:Live Server、Vue - Official、Vue VSCode Snippets、别名路径跳转 官网:Vite | 下一代的前端工具链 (vitejs.dev) 1.创建一个文件夹VueApp,运行cmd转到该目录下,执行命令:npm create vite@latest 2.然后转到vuedemo目录下命令:cd vuedemo, 3.执行命令:npm install。文件夹内会新添加no

    2024年04月08日
    浏览(51)
  • 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架

    项目代码以上传至码云,项目地址:https://gitee.com/breezefaith/uniapp-vue3-ts-scaffold 近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。但前台系统花样繁多

    2024年01月20日
    浏览(63)
  • uniapp+vue3+vite+ts搭建项目引入uni-ui和uviewPlus组件库

    一、创建项目架构 首先使用官方提供的脚手架创建一个项目 在这里插入代码片 ,这里我创建的 vue3 + vite + ts 的项目: (如命令行创建失败,请直接访问 gitee下载模板) 二、下载依赖 启动 三、下载安装包 引入uni-ui src/package.json 文件配置easycom模式 引入uview-plus main.ts配置 u

    2024年02月13日
    浏览(64)
  • Vue3 - vite 引入本地图片方法,页面引入本地静态资源图像详细教程,解决 UI 前端组件库的图片属性无法使用本地图像问题(无论是本地开发还是打包部署,本地图片的路径正常可用)

    在 webpack 中通常用 require() 来引入静态图片,但在 vite 中这种方法就不行了。 本文实现了 在 vue3+vite 项目开发中,实现引入本地图片(静态资源),并且 build 打包后依然正常运行, 支持普通 img 标签使用,也支持 UI 组件库的各种 “图片属性” 当参数进行使用。 如下图所示

    2024年02月08日
    浏览(76)
  • vite打包vue组件库

    前言 本文讲的不是一步步搭建项目,然后如何规划好项目结构,文件夹命名等等,而是从一个整体中剥离出组件库。 首先我们的项目不是一开始就规划好了之后如何打包,都是一步步趟坑趟过来的,所以一开始的时候,我们是直接clone vue3的模板,然后就开搞了,中间我们还

    2024年02月08日
    浏览(49)
  • Vue3+vite搭建基础架构(6)--- 使用vue-router

    这里记录下自己在Vue3+vite的项目使用vue-router的过程,不使用ts语法,方便以后直接使用。这里承接自己的博客Vue3+vite搭建基础架构(5)— 使用vue-i18n这篇博客,在该博客项目的基础上增加使用vue-router。 Vue3使用vue-router官方文档:https://router.vuejs.org/zh/installation.html 根据官网给

    2024年02月21日
    浏览(48)
  • uniapp之通过vue-cli命令行创建Vue3/Vite版,JavaScript开发,引入uni-ui扩展组件

    注意: Vue3/Vite版要求 node 版本^14.18.0 || =16.0.0 如果使用 HBuilderX(3.6.7以下版本)运行 Vue3/Vite 创建的最新的 cli 工程,需要在 HBuilderX 运行配置最底部设置 node路径 为自己本机高版本 node 路径(注意需要重启 HBuilderX 才可以生效) HBuilderX Mac 版本菜单栏左上角 HBuilderX-偏好设置

    2024年02月12日
    浏览(63)
  • vue3 vite 打包 二级目录刷新空白

    控制台报错:Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of \\\"text/html\\\". Strict MIME type checking is enforced for module scripts per HTML spec. 打包路径问题,修改vite.config.ts文件的base

    2024年02月09日
    浏览(58)
  • vue3 + vite 多项目多模块打包

    vue3 + vite 多项目多模块打包 本示例基于 vite-plugin-html 插件,实现多个独立项目共存,共享组件和依赖,运行、打包互不干扰。 兼容性注意 Vite 需要 Node.js 14.18+、16+版本,有些模板需要更高的版本 虽然创建项目用的14.17.5版本,但是后面运行项目用的18.15.0 HTML模板插件 打包一

    2024年02月10日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包