最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從0搭建Vue3組件庫之如何使用Vite打包組件庫

 更新時間:2023年03月07日 14:59:47   作者:迪迪滴  
這篇文章主要介紹了從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"
  },

執(zhí)行pnpm run build

同時生成了打包后的 dist 文件

但是這種打包方式最終會將整個組件庫打包到一個文件中,并且樣式文件也不能按需加載,所以我們需要修改一下配置讓打包后的結構和我們開發(fā)的結構一致,如下配置我們將打包后的文件放入 easyest 目錄下,因為后續(xù)發(fā)布組件庫的名字就是 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()],
});

執(zhí)行pnpm run build,此時生成打包后的文件目錄如下

但是此時的所有樣式文件還是會統(tǒng)一打包到 style.css 中,還是不能進行樣式的按需加載,所以接下來我們將讓 vite 不打包樣式文件,樣式文件后續(xù)單獨進行打包。

聲明文件

到這里其實打包的組件庫只能給 js 項目使用,在 ts 項目下運行會出現(xiàn)一些錯誤,而且使用的時候還會失去代碼提示功能,這樣的話我們就失去了用 ts 開發(fā)組件庫的意義了。所以我們需要在打包的庫里加入聲明文件(.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(),
 
  ],
});

再次打包就會發(fā)現(xiàn)打包后文件中出現(xiàn)了我們需要的聲明文件

其實現(xiàn)在大部分前端構建腳手架都支持 esmodule 了,而 esmodule 本身就支持按需加載,所以說組件庫打包后的 es 格式它本身自帶 treeShaking,而不需要額外配置按需引入。后面我們要做的則是讓樣式文件也支持按需引入,敬請期待。

關注公眾號 web前端進階 查看完整教程

本篇文章代碼地址 如何使用Vite打包組件庫,hxd們star一下

到此這篇關于從0搭建Vue3組件庫之如何使用Vite打包組件庫的文章就介紹到這了,更多相關Vite打包組件庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue 實現(xiàn)超長文本截取,懸浮框提示

    vue 實現(xiàn)超長文本截取,懸浮框提示

    這篇文章主要介紹了vue 實現(xiàn)超長文本截取,懸浮框提示,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 一文教你解決Vue所有報錯

    一文教你解決Vue所有報錯

    Vue是一個流行的前端框架,許多web開發(fā)人員使用Vue來構建他們的應用程序。然而,正如任何其他框架一樣,Vue也可能會發(fā)生錯誤。在這篇技術文章中,我們將探討Vue常見的報錯以及如何解決它們
    2023-03-03
  • vue清空數(shù)組的幾個方式(小結)

    vue清空數(shù)組的幾個方式(小結)

    本文主要介紹了vue清空數(shù)組的幾個方式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • vue簡單封裝axios插件和接口的統(tǒng)一管理操作示例

    vue簡單封裝axios插件和接口的統(tǒng)一管理操作示例

    這篇文章主要介紹了vue簡單封裝axios插件和接口的統(tǒng)一管理操作,結合具體實例形式分析了vue中axios插件安裝、配置及接口統(tǒng)一管理具體操作技巧,需要的朋友可以參考下
    2020-02-02
  • Vue中$once的兩個實用小技巧分享

    Vue中$once的兩個實用小技巧分享

    $once是一個函數(shù),可以為Vue組件實例綁定一個自定義事件,但該事件只能被觸發(fā)一次,觸發(fā)之后隨即被移除,下面這篇文章主要給大家介紹了關于Vue中$once的兩個實用小技巧,需要的朋友可以參考下
    2022-04-04
  • vue.js 微信支付前端代碼分享

    vue.js 微信支付前端代碼分享

    下面小編就為大家分享一篇vue.js 微信支付前端代碼。具有很好的參考價值。希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 詳解Vue中keep-alive的使用

    詳解Vue中keep-alive的使用

    keep-alive是Vue的內置組件,當它包裹動態(tài)組件時,會緩存不活動的組件實例,而不是銷毀,這篇文章主要介紹了詳解Vue中keep-alive的使用,需要的朋友可以參考下
    2023-03-03
  • Vue源碼分析之虛擬DOM詳解

    Vue源碼分析之虛擬DOM詳解

    所謂虛擬DOM就是為了解決瀏覽器性能問題而被設計出來的。如前,若一次操作中有 10 次更新 這篇文章主要給大家介紹了關于Vue源碼分析之虛擬DOM的相關資料,需要的朋友可以參考下
    2021-05-05
  • element-ui 表格sortable排序手動js清除方式

    element-ui 表格sortable排序手動js清除方式

    這篇文章主要介紹了element-ui 表格sortable排序手動js清除方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue element-ui實現(xiàn)動態(tài)面包屑導航

    vue element-ui實現(xiàn)動態(tài)面包屑導航

    這篇文章主要為大家詳細介紹了vue element-ui實現(xiàn)動態(tài)面包屑導航,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論

皋兰县| 久治县| 兴国县| 晋城| 抚宁县| 大港区| 中宁县| 务川| 布尔津县| 迁安市| 定西市| 新津县| 德钦县| 平阴县| 连云港市| 东丽区| 泸溪县| 桦南县| 阿合奇县| 昂仁县| 娄底市| 安达市| 犍为县| 天台县| 霍城县| 海盐县| 平塘县| 固始县| 盐城市| 通许县| 贺州市| 江华| 原阳县| 宕昌县| 西青区| 新河县| 奉新县| 麻城市| 临沧市| 香港 | 娱乐|