国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)

這篇具有很好參考價(jià)值的文章主要介紹了Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、需求

在開(kāi)發(fā)Vue3 + Ts項(xiàng)目時(shí):使用自己二次封裝的基礎(chǔ)組件,沒(méi)有Ts類(lèi)型提示,不能像Element-plus鼠標(biāo)停在標(biāo)簽或者屬性上就能提示當(dāng)前組件有哪些屬性(即props)及其屬性的類(lèi)型,如下圖是Element-plus組件的使用Vs CodeVolar的提示:
Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)

二、如何為自己封裝的組件庫(kù)創(chuàng)建對(duì)應(yīng)的類(lèi)型聲明文件

1、安裝vite-plugin-dts其地址點(diǎn)擊

此插件的作用:為打包的庫(kù)里加入聲明文件(即生成:.d.ts文件)

pnpm add vite-plugin-dts -D
或
npm i vite-plugin-dts -D

2、修改vite.config.ts文件

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import viteCompression from 'vite-plugin-compression' // 靜態(tài)資源壓縮
import dts from 'vite-plugin-dts'
export default defineConfig({
plugins: [
    vue(),
    dts(),
    vueJsx(),
    viteCompression({
      verbose: true,
      disable: false, // 不禁用壓縮
      deleteOriginFile: false, // 壓縮后是否刪除原文件
      threshold: 10240, // 壓縮前最小文件大小
      algorithm: 'gzip', // 壓縮算法
      ext: '.gz', // 文件類(lèi)型
    })
    ],
  build: {
    outDir: 'lib',
    // cssCodeSplit: true, // 強(qiáng)制內(nèi)聯(lián)CSS
    rollupOptions: {
      // 請(qǐng)確保外部化那些你的庫(kù)中不需要的依賴(lài)
      external: ['vue'],
      output: {
        // 在 UMD 構(gòu)建模式下為這些外部化的依賴(lài)提供一個(gè)全局變量
        globals: {
          vue: 'Vue',
        },
      },
    },
    lib: {
      // entry: resolve(__dirname, 'packages/index.ts'),
      entry: './packages/index.ts',
      name: 't-ui-plus',
      // formats: ['es', 'cjs'],
      fileName: 't-ui-plus',
    },
  }
})

3、tsconfig.json文件加上以下

// 指定被編譯文件所在的目錄 ** 表示任意目錄, * 表示任意文件
"include": [
    "packages/**/*.ts",
    "packages/**/*.d.ts",
    "packages/**/*.tsx",
    "packages/**/*.vue"
  ],
 // 指定不需要被編譯的目錄
  "exclude": [
    "node_modules"
  ],

4、執(zhí)行vite build后生成lib文件夾,結(jié)構(gòu)如下:

會(huì)把packages文件夾里面的文件全部轉(zhuǎn)成.d.ts格式

Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)

5、package.json文件加上以下:

// 配置模塊入口指向
"main": "lib/t-ui-plus.umd.cjs",
"module": "lib/t-ui-plus.umd.cjs",
"type": "module",
// 修改ts聲明文件指向構(gòu)建輸出的js聲明文件
"types": "lib/index.d.ts",
// 修改需要發(fā)布的文件清單
"files":[
    "package.json",
    "README.md",
    "LICENSE",
    "lib"
  ],

6、因?yàn)閂olar內(nèi)部通過(guò)GlobalComponents 接口去進(jìn)行類(lèi)型處理,因此需要在packages文件夾下新增.d.ts文件(我命名為:components.d.ts)

import TLayoutPage from './layout-page/src/index.vue'
import TLayoutPageItem from './layout-page-item/src/index.vue'
import TQueryCondition from './query-condition/src/index.vue'
import TTable from './table/src/index.vue'
import TForm from './form/src/index.vue'
import TSelect from './select/src/index.vue'
import TSelectTable from './select-table/src/index.vue'
import TDetail from './detail/src/index.vue'
import TButton from './button/src/index.vue'
import TStepWizard from './step-wizard/src/index.vue'
import TTimerBtn from './timer-btn/src/index.vue'
import TModuleForm from './module-form/src/index.vue'
import TAdaptivePage from './adaptive-page/src/index.vue'
import TDatePicker from './date-picker/src/index.vue'
declare module 'vue' {
  export interface GlobalComponents {
    TLayoutPage: typeof TLayoutPage
    TLayoutPageItem: typeof TLayoutPageItem
    TQueryCondition: typeof TQueryCondition
    TTable: typeof TTable
    TForm: typeof TForm
    TSelect: typeof TSelect
    TSelectTable: typeof TSelectTable
    TDetail: typeof TDetail
    TButton: typeof TButton
    TStepWizard: typeof TStepWizard
    TTimerBtn: typeof TTimerBtn
    TModuleForm: typeof TModuleForm
    TAdaptivePage: typeof TAdaptivePage
    TDatePicker: typeof TDatePicker
  }
}

7、npm publish 發(fā)布到npm,此時(shí)的lib結(jié)構(gòu)如下:

Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)

三、如何在Vue3 + Vite + Ts項(xiàng)目中使用組件庫(kù)并讓其支持Ts類(lèi)型提示

1、安裝@wocwin/t-ui-plus,并全局使用,鼠標(biāo)移入標(biāo)簽,如下并沒(méi)有Ts類(lèi)型提示:

Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)

2、讓其組件(@wocwin/t-ui-plus)有TS類(lèi)型提示的解決辦法:在tsconfig.json文件中加上以下此句代碼:

"compilerOptions": {
	 "types": [ // 用來(lái)指定需要包含的模塊,并將其包含在全局范圍內(nèi)。
      ...
      "@wocwin/t-ui-plus/lib/components.d.ts"
    ],
}

3、最終效果—如下:

Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)

四、 源碼地址

gitHub組件地址

gitee碼云組件地址

五、相關(guān)文章

Vue3 + Vite + Ts開(kāi)源后臺(tái)管理系統(tǒng)模板


基于ElementUi或AntdUI再次封裝基礎(chǔ)組件文檔


基于Element-plus再次封裝基礎(chǔ)組件文檔(vue3+ts)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-493688.html

到了這里,關(guān)于Vue3 + Vite + Ts自己封裝的基礎(chǔ)組件庫(kù)發(fā)布npm ,npm安裝使用(Volar )支持TS 類(lèi)型提示功能(vite-plugin-dts 使用)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 前端新手Vue3+Vite+Ts+Pinia+Sass項(xiàng)目指北系列文章 —— 第十一章 基礎(chǔ)界面開(kāi)發(fā) (組件封裝和使用)

    前端新手Vue3+Vite+Ts+Pinia+Sass項(xiàng)目指北系列文章 —— 第十一章 基礎(chǔ)界面開(kāi)發(fā) (組件封裝和使用)

    Vue 是前端開(kāi)發(fā)中非常常見(jiàn)的一種框架,它的易用性和靈活性使得它成為了很多開(kāi)發(fā)者的首選。而在 Vue2 版本中,組件的開(kāi)發(fā)也變得非常簡(jiǎn)單,但隨著 Vue3 版本的發(fā)布,組件開(kāi)發(fā)有了更多的特性和優(yōu)化,為我們的業(yè)務(wù)開(kāi)發(fā)帶來(lái)了更多便利。本文將介紹如何使用 Vue3 開(kāi)發(fā)業(yè)務(wù)組件

    2024年02月19日
    瀏覽(97)
  • 使用vite框架封裝vue3插件,發(fā)布到npm

    使用vite框架封裝vue3插件,發(fā)布到npm

    目錄 ??一、vue環(huán)境搭建 1、創(chuàng)建App.vue 2、修改main.ts 3、修改vite.config.ts 二、插件配置 1、創(chuàng)建插件 2、開(kāi)發(fā)調(diào)試 3、打包配置 4、package.json文件配置 5、執(zhí)行打包命令 pnpm build 6、修改index.d.ts 目錄 ??一、vue環(huán)境搭建 1、創(chuàng)建App.vue 2、修改main.ts 3、修改vite.config.ts 二、插件配置

    2024年01月17日
    瀏覽(24)
  • vue3+ts+vite項(xiàng)目引入echarts,vue3項(xiàng)目echarts組件封裝

    vue3+ts+vite項(xiàng)目引入echarts,vue3項(xiàng)目echarts組件封裝

    技術(shù)棧 :Vue3 + Ts + Vite + Echarts 簡(jiǎn)介 : 圖文詳解,教你如何在 Vue3 項(xiàng)目中 引入Echarts , 封裝Echarts組件 ,并實(shí)現(xiàn)常用Echarts圖例 1.1 靜態(tài)效果 1.2 動(dòng)態(tài)效果 2.1 安裝 Echarts npm: pnpm: 2.2 main.ts 中引入 2.3 Echarts 組件封裝 /src/components/ReEcharts/index.vue 文件中寫(xiě)入如下代碼 3.1 柱狀圖 實(shí)現(xiàn)

    2024年02月09日
    瀏覽(33)
  • Vue2自己封裝的基礎(chǔ)組件庫(kù)或基于Element-ui再次封裝的基礎(chǔ)組件庫(kù),如何發(fā)布到npm并使用(支持全局或按需引入使用),超詳細(xì)

    Vue2自己封裝的基礎(chǔ)組件庫(kù)或基于Element-ui再次封裝的基礎(chǔ)組件庫(kù),如何發(fā)布到npm并使用(支持全局或按需引入使用),超詳細(xì)

    以下我以 wocwin-admin-vue2 項(xiàng)目為例 修改目錄結(jié)構(gòu),最終如下 1、導(dǎo)入組件,組件必須聲明 name 2、定義 install 方法,接收 Vue 作為參數(shù)。如果使用 use 注冊(cè)插件,則所有的組件都將被注冊(cè) 3、導(dǎo)出的對(duì)象必須具有 install,才能被 Vue.use() 方法安裝(全局使用) 4、按需引入 5、packa

    2024年02月08日
    瀏覽(35)
  • 沉淀自己的pro-table組件,并發(fā)布到npm(Vue3、element-plus)

    傳送門(mén) 約定:npm包名 vue3-el-pro-table ,引用 vue3-el-pro-table 的包名為“本項(xiàng)目”。 聲明: Vue3ProTable.vue 代碼是在這個(gè)項(xiàng)目的基礎(chǔ)上進(jìn)行修改的。 作者:hans774882968以及hans774882968以及hans774882968 Quick Start src/main.ts Then use vue3-pro-table / directly in .vue file. Import interface: Component props defi

    2024年02月16日
    瀏覽(58)
  • Vue3+Vite+Element-plus搭建組件庫(kù)并使用Vitepress編輯組件庫(kù)文檔且發(fā)布到 npm并且部署 github pages(vitepress文檔渲染.vue組件-推薦使用第二種)

    Vue3+Vite+Element-plus搭建組件庫(kù)并使用Vitepress編輯組件庫(kù)文檔且發(fā)布到 npm并且部署 github pages(vitepress文檔渲染.vue組件-推薦使用第二種)

    可以參考我之前發(fā)布的vite快速搭建vue3項(xiàng)目文章來(lái)創(chuàng)建;也可以直接使用我開(kāi)源Vue3.2+Ts+Vite3+Pinia+Element-Plus模板wocwin-admin 以下我以 wocwin-admin 項(xiàng)目為例 當(dāng)前目錄結(jié)構(gòu)如下 1、編輯 packages/table/index.ts,實(shí)現(xiàn)組件的導(dǎo)出 2、編輯 packages/index.ts 文件,實(shí)現(xiàn)組件的全局注冊(cè) 1、安裝vite

    2024年02月13日
    瀏覽(23)
  • vue3+ts+vite中封裝axios,使用方法從0到1

    vue3+ts+vite中封裝axios,使用方法從0到1

    http.ts文件內(nèi)容: methods.ts文件內(nèi)容: api/user.ts 用戶相關(guān)接口 types/user.d.ts定義接口ts類(lèi)型 請(qǐng)求成功測(cè)試

    2024年02月02日
    瀏覽(18)
  • Vue3+vite實(shí)現(xiàn)組件上傳npm并應(yīng)用

    Vue3+vite實(shí)現(xiàn)組件上傳npm并應(yīng)用

    場(chǎng)景 :就是A項(xiàng)目的組件需要在B項(xiàng)目中使用 下面舉例的是把a(bǔ)項(xiàng)目pagination分頁(yè)組件上傳到npm,在b項(xiàng)目使用 采坑日記 :封裝的組件一定要起name要不調(diào)用不成功 1.1 首先在公用組件components文件夾下創(chuàng)建index.js文件, ?1.2 index.js ?1.3 vite.config.js ?1.4 package.json ?執(zhí)行npm run build打包

    2024年02月16日
    瀏覽(50)
  • 封裝 vue3 入場(chǎng)動(dòng)畫(huà) 插件 并發(fā)布到 npm

    封裝 vue3 入場(chǎng)動(dòng)畫(huà) 插件 并發(fā)布到 npm

    vue create?entry-animate 只需要簡(jiǎn)單的項(xiàng)目框架即可,routervuex 都不用; src 目錄下新建?package,package文件夾是存放我們封裝的組件的; 還需要加一個(gè)入口文件,在 package 中加一個(gè) index.js 文件,通過(guò)后期引入main.js 文件的時(shí)候,注冊(cè)成全局組件; 目錄圖片 我寫(xiě)了一個(gè) Vue3 的動(dòng)畫(huà)

    2024年02月15日
    瀏覽(32)
  • Vue2封裝一個(gè)全局通知組件并發(fā)布到NPM

    Vue2封裝一個(gè)全局通知組件并發(fā)布到NPM

    ???作者:周棋洛,計(jì)算機(jī)學(xué)生 ?星座:金牛座 ??主頁(yè):點(diǎn)擊查看更多 ??關(guān)鍵: vue2 組件封裝 npm發(fā)包 你好!我是王子周棋洛,好久沒(méi)寫(xiě)文了。 今天帶大家 封裝 一個(gè)類(lèi)似 element-ui 的全局通知組件,并發(fā)布到 npm 后安裝使用自己封裝的組件。go,go,go?? 原因1:現(xiàn)成UI組件

    2024年02月09日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包