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

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

這篇具有很好參考價(jià)值的文章主要介紹了使用vite框架封裝vue3插件,發(fā)布到npm。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

??一、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

二、插件配置

1、創(chuàng)建插件

2、開(kāi)發(fā)調(diào)試

3、打包配置

4、package.json文件配置


上一篇文章講述使用vite《如何使用vite框架封裝一個(gè)js庫(kù),并發(fā)布npm包》封裝js庫(kù),本文將講述使用vite框架封裝vue3插件?;经h(huán)境的搭建,參見(jiàn)《如何使用vite框架封裝一個(gè)js庫(kù),并發(fā)布npm包》。如下圖所示,

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

??一、vue環(huán)境搭建

基本環(huán)境搭建好以后,開(kāi)始安裝開(kāi)發(fā)環(huán)境。注意,我們的目的是開(kāi)發(fā)vue插件,不是開(kāi)發(fā)vue項(xiàng)目。因此,vue的依賴應(yīng)該安裝在開(kāi)發(fā)環(huán)境當(dāng)中,而不是生產(chǎn)環(huán)境。命令行如下:

pnpm add vue@latest vue-tsc @vitejs/plugin-vue  @types/node -D

1、創(chuàng)建App.vue

安裝完成后,在src目錄下創(chuàng)建App.vue文件:

<script setup lang="ts">
//import { ref, reactive } from 'vue';
import typescriptLogo from './typescript.svg';
</script>

<template>
  <div>
    <a  target="_blank">
      <img src="./vite.svg" class="logo" alt="Vite logo" />
    </a>
    <a  target="_blank">
      <img
        :src="`${typescriptLogo}`"
        class="logo vanilla"
        alt="TypeScript logo"
      />
    </a>
    <h1>Vite + TypeScript</h1>
    <div class="card">
      <button id="counter" type="button"></button>
    </div>
    <p class="read-the-docs">
      Click on the Vite and TypeScript logos to learn more
    </p>
  </div>
</template>

2、修改main.ts

修改src目錄下的main.ts文件:

import './style.css';
import { createApp } from 'vue';
import App from './App.vue';

createApp(App).mount('#app');

3、修改vite.config.ts

?修改vite.config.ts配置文件:

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path';

export default defineConfig({
  plugins: [vue()],
  build: {
    lib: {
      entry: resolve(__dirname, 'lib/main.ts'),
      name: 'Counter',
      fileName: 'counter'
    }
  },
  server: {
    host: '0.0.0.0',
    port: 3100,
    open: true,
    strictPort: true
  }
});

至此vue開(kāi)發(fā)環(huán)境就已經(jīng)配置好了,使用啟動(dòng)命令:

pnpm dev

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

?看到一以上配置,有些同學(xué)可能好奇,干嘛 這么麻煩,直接使用vite創(chuàng)建一個(gè)vue項(xiàng)目不就行了?直接使用vite創(chuàng)建一個(gè)vite項(xiàng)目也可以開(kāi)發(fā)vue插件。這里只是提供了一個(gè)方法開(kāi)發(fā)vue插件的方法,我在開(kāi)發(fā)vue插件的時(shí)候也是做個(gè)比較后,選擇使用library庫(kù)進(jìn)行開(kāi)發(fā),并且個(gè)人認(rèn)為這比在vue項(xiàng)目當(dāng)中開(kāi)發(fā)插件更好,更快,更簡(jiǎn)潔。至于說(shuō)大家怎么選擇,仁者見(jiàn)仁智者見(jiàn)智,根據(jù)個(gè)人喜好來(lái)吧。

如果在開(kāi)發(fā)的時(shí)候希望代碼規(guī)范漂亮,可以選擇給插件配置prettier和eslint,安裝依賴命令如下:

pnpm add eslint @typescript-eslint/parser eslint-config-airbnb-base eslint-config-prettier eslint-plugin-import eslint-plugin-prettier eslint-plugin-vue prettier -D

?prettier和eslint文件配置參見(jiàn)Vue3+Vite+TS+Eslint搭建生產(chǎn)項(xiàng)目最終版配置?,這些都不是必須得,可以選擇不用。

二、插件配置

1、創(chuàng)建插件

在src目錄下建立components,創(chuàng)建一個(gè)JsonExportExcel.vue文件:

<script setup lang="ts">
import { toRaw } from 'vue';
import { json2Excel } from '@/assets/utils';

const props = defineProps({
  title: {
    type: String,
    default: () => 'file name'
  },
  jsonData: {
    type: Array,
    default: () => []
  },
  fields: {
    type: Object,
    default: () => {}
  }
});
const { jsonData, fields, title } = toRaw(props);
const handleClick = () => {
  json2Excel(jsonData, fields, title);
};
</script>
<script lang="ts">
export default {
  name: 'JsonExportExcel' // 插件名稱
};
</script>

<template>
  <button class="muk-btn primary" @click="handleClick">download</button>
</template>

<style scoped>
.muk-btn {
  appearance: none;
  border: none;
  outline: none;
  background: #fff;
  text-align: center;
  border: 1px solid transparent;
  border-radius: 4px;
  cursor: pointer;
}

.large {
  width: 240px;
  height: 50px;
  font-size: 16px;
}

.moddle {
  width: 180px;
  height: 50px;
  font-size: 16px;
}

.small {
  width: 100px;
  height: 32px;
}

.mini {
  width: 60px;
  height: 32px;
}

.default {
  border-color: #e4e4e4;
  color: #666;
}

.primary {
  border-color: rgb(104, 72, 199);
  background: rgb(120, 97, 183);
  color: #fff;
}

.plain {
  border-color: skyblue;
  color: skyblue;
  background: lighten(skyblue, 50%);
}

.gray {
  border-color: #ccc;
  background: #ccc;
  color: #fff;
}
</style>

2、開(kāi)發(fā)調(diào)試

在lib文件目錄下引入JsonExportExcel.vue,然后開(kāi)發(fā)調(diào)試JsonExportExcel.vue組件,lib/main.ts文件:

import ExcelExportJson from '../src/components/ExcelExportJson.vue';
import JsonExportExcel from '../src/components/JsonExportExcel.vue';
// 按需引入
export { ExcelExportJson, JsonExportExcel };
const components = [ExcelExportJson, JsonExportExcel];

// 批量組件注冊(cè)
const install = {
  install(App: any) {
    components.forEach((item) => {
      console.log('?? ~ components.forEach ~ item:', item);
      App.component(item.name, item);
    });
  }
};

export default install;

3、打包配置

在vue.config.ts當(dāng)中配置文件打包:

?安裝vite-plugin-dts,此插件的作用:為打包的庫(kù)里加入聲明文件(即生成:.d.ts文件)?

pnpm add vite-plugin-dts -D

import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { resolve } from 'path';
import dts from 'vite-plugin-dts';
import viteCompression from 'vite-plugin-compression';

export default ({ mode, command }) => {
  console.log('?? ~ command:', command);
  console.log('?? ~ mode:', mode);
  return defineConfig({
    plugins: [
      vue(),
      dts(),
      viteCompression({
        verbose: true,
        disable: false, // 不禁用壓縮
        deleteOriginFile: false, // 壓縮后是否刪除原文件
        threshold: 10240, // 壓縮前最小文件大小
        algorithm: 'gzip', // 壓縮算法
        ext: '.gz' // 文件類型
      })
    ],
    resolve: {
      alias: {
        '@': resolve(__dirname, 'src')
      }
    },
    build: {
      minify: 'esbuild',
      sourcemap: true,
      lib: {
        entry: resolve(__dirname, 'lib/main.ts'),
        name: 'vue3ExcelJson',
        fileName: (format) => `vue3-excel-json.${format}.js`
      },
      rollupOptions: {
        external: ['vue', 'xlsx'],
        output: {
          globals: {
            vue: 'Vue',
            xlsx: 'Xlsx'
          }
        }
      }
    },
    esbuild: {
      drop: mode === 'production' ? ['console', 'debugger'] : []
    },
    server: {
      host: '0.0.0.0',
      port: 3100,
      open: true,
      strictPort: true
    }
  });
};

4、package.json文件配置

{
  "name": "vue3-excel-json",
  "version": "1.0.5",
  "description": "Based on Vue3 plugin, quickly implement the function of uploading Excel to JSON, importing JSON, and exporting Excel",
  "type": "module",
  "files": [
    "dist",
    "index.d.ts"
  ],
  "main": "./dist/vue3-excel-json.umd.js",
  "module": "./dist/vue3-excel-json.es.js",
  "style": "./dist/style.css",
  "types": "./index.d.ts",
  "exports": {
    ".": {
      "types": "./index.d.ts",
      "import": "./dist/vue3-excel-json.es.js",
      "require": "./dist/vue3-excel-json.umd.js"
    },
    "./dist/style.css": {
      "import": "./dist/style.css",
      "require": "./dist/style.css"
    }
  },
  "scripts": {
    "dev": "vite",
    "build": "vue-tsc && vite build"
  },
  "keywords": [
    "excel",
    "json",
    "export",
    "excel json"
  ],
  "author": "patton",
  "license": "ISC",
  "repository": {
    "type": "git",
    "url": "https://github.com/renleiabc/vue3-excel-json.git"
  },
  "bugs": {
    "url": "https://github.com/renleiabc/vue3-excel-json/issues"
  },
  "devDependencies": {
    "@types/node": "^20.11.0",
    "@typescript-eslint/parser": "^6.18.1",
    "@vitejs/plugin-vue": "^5.0.3",
    "eslint": "^8.56.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "eslint-config-prettier": "^9.1.0",
    "eslint-plugin-import": "^2.29.1",
    "eslint-plugin-prettier": "^5.1.3",
    "eslint-plugin-vue": "^9.20.0",
    "prettier": "^3.1.1",
    "sass": "^1.69.7",
    "typescript": "^5.3.3",
    "vite": "^5.0.10",
    "vue": "^3.4.10",
    "vue-tsc": "^1.8.27"
  },
  "dependencies": {
    "xlsx": "^0.18.5"
  }
}

5、執(zhí)行打包命令 pnpm build

生成目錄如下:

?使用vite框架封裝vue3插件,發(fā)布到npm,vite,npm,前端,vue,插件,組件

6、修改index.d.ts

import type { App } from 'vue';

export interface InstallOptions {
  /** @default `ElIcon` */
  prefix?: string;
}
// eslint-disable-next-line no-unused-vars
declare const _default: (app: App, { prefix }?: InstallOptions) => void;
export default _default;
export { default as ExcelExportJson } from './dist/src/components/ExcelExportJson.vue';
export { default as JsonExportExcel } from './dist/src/components/JsonExportExcel.vue';

配置號(hào)以后,就可以登錄npm發(fā)布,Github代碼倉(cāng)庫(kù)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-798091.html

到了這里,關(guān)于使用vite框架封裝vue3插件,發(fā)布到npm的文章就介紹完了。如果您還想了解更多內(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自定義封裝vue + element-ui 表格組件,發(fā)布到npm包的全過(guò)程。

    vue3 + vite自定義封裝vue + element-ui 表格組件,發(fā)布到npm包的全過(guò)程。

    當(dāng)我們項(xiàng)目中用到的表格太多的話,就會(huì)導(dǎo)致我們的代碼量一直增加,所以我們要封裝一個(gè)公共得組件,通過(guò)傳參引入來(lái)使用,下面這篇文章主要給大家介紹了關(guān)于vue3+vite自定義封裝vue組件發(fā)布到npm包的相關(guān)資料,需要的朋友可以參考下。 提示我們要安裝 create-vite@4.1.0 得依賴

    2024年02月02日
    瀏覽(26)
  • 前端vue3分享——項(xiàng)目封裝axios、vite使用env環(huán)境變量

    前端vue3分享——項(xiàng)目封裝axios、vite使用env環(huán)境變量

    大家好,我是yma16,本文分享關(guān)于前端vue3分享——項(xiàng)目封裝axios、使用env環(huán)境變量。 該系列往期文章: csdn新星計(jì)劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板 認(rèn)識(shí)vite_vue3 初始化項(xiàng)目到打包 什么是axios axios是一個(gè)流行的JavaScript庫(kù),用于在瀏覽器和Node.js環(huán)境中進(jìn)行H

    2024年02月07日
    瀏覽(177)
  • Vue3+TS+Vite開(kāi)發(fā)組件庫(kù)并發(fā)布到npm

    Vue3+TS+Vite開(kāi)發(fā)組件庫(kù)并發(fā)布到npm

    Vue2開(kāi)發(fā)插件并發(fā)布到npm 使用VitePress靜態(tài)網(wǎng)站生成器創(chuàng)建組件庫(kù)文檔網(wǎng)站并部署到GitHub 目標(biāo):創(chuàng)建 vue-amazing-ui 組件庫(kù) ,并發(fā)布到npm 該組件庫(kù)已發(fā)布到 npm,直接安裝即可使用: Vue Amazing UI 在線預(yù)覽 目前擁有的 Components 組件: Component name Descriptions Component name Descriptions Alert 警

    2024年02月08日
    瀏覽(23)
  • 前端新手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)
  • vue3.x + vite4.3構(gòu)建屬于自己的組件庫(kù)并發(fā)布npm包

    vue3.x + vite4.3構(gòu)建屬于自己的組件庫(kù)并發(fā)布npm包

    歡迎點(diǎn)擊領(lǐng)取 -《前端開(kāi)發(fā)面試題進(jìn)階秘籍》:前端登頂之巔-最全面的前端知識(shí)點(diǎn)梳理總結(jié) *分享一個(gè)使用比較久的?? 在國(guó)內(nèi)的項(xiàng)目研發(fā)過(guò)程中,使用vue框架的項(xiàng)目占比很大,同樣延伸出了很多非常優(yōu)秀的UI組件庫(kù),比如element-plus、ant-design等;優(yōu)勢(shì):資源較少,快速開(kāi)發(fā),豐

    2024年02月02日
    瀏覽(49)
  • 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+Vite +UniAPP-- 框架搭建

    前端VUE3+Vite +UniAPP-- 框架搭建

    除了HBuilderX可視化界面,也可以使用 cli 腳手架,可以通過(guò) vue-cli 創(chuàng)建 uni-app 項(xiàng)目。 全局安裝 vue-cli 官網(wǎng) 配置tailwindcss插件 官網(wǎng) 在 tailwind.config.js 配置文件中添加所有模板文件的路徑。 將加載 Tailwind 的指令添加到你的 CSS 文件中 在你的主 CSS 文件中通過(guò) @tailwind 指令添加每一

    2024年02月11日
    瀏覽(16)
  • Vite4 + Vue3 項(xiàng)目打包并發(fā)布Nginx服務(wù)器 (前端必看)

    Vite4 + Vue3 項(xiàng)目打包并發(fā)布Nginx服務(wù)器 (前端必看)

    這里因?yàn)槲覀冇械男』锇榭赡懿惶枰?wù)器,單純學(xué)習(xí)的話也沒(méi)有必要去買一個(gè)服務(wù)器。如果需要把自己的東西部署到公網(wǎng)上,有很多方式,自行百度。你也可以購(gòu)買阿里云或者騰訊云。邏輯都是一樣的,我這里使用的虛擬機(jī)+centos系統(tǒng),我已經(jīng)提前在自己的機(jī)器安裝好了。

    2024年02月05日
    瀏覽(30)
  • 07. vue3+vite+qiankun搭建微應(yīng)用前端框架,并接入vue3微應(yīng)用

    07. vue3+vite+qiankun搭建微應(yīng)用前端框架,并接入vue3微應(yīng)用

    因?yàn)闃I(yè)務(wù)系統(tǒng)接入的需要,決定將一個(gè)vue3+vite+ts的主應(yīng)用系統(tǒng),改造成基于qiankun的微應(yīng)用架構(gòu)。此文記錄了改造的過(guò)程及vue3微應(yīng)用接入的種種問(wèn)題。 網(wǎng)上有很多關(guān)于微應(yīng)用改造的案例,但很多都沒(méi)寫(xiě)部署之后什么情況。寫(xiě)了部署的,沒(méi)有實(shí)操部署在二級(jí)目錄、三級(jí)目錄是什

    2024年01月16日
    瀏覽(18)
  • Vite-Admin后臺(tái)管理系統(tǒng)|vite4+vue3+pinia前端后臺(tái)框架實(shí)例

    Vite-Admin后臺(tái)管理系統(tǒng)|vite4+vue3+pinia前端后臺(tái)框架實(shí)例

    基于 vite4.x+vue3+pinia 前端后臺(tái)管理系統(tǒng)解決方案 ViteAdmin 。 前段時(shí)間分享了一篇vue3自研pc端UI組件庫(kù)VEPlus。這次帶來(lái)最新開(kāi)發(fā)的基于 vite4+vue3+pinia 技術(shù)棧搭配ve-plus組件庫(kù)構(gòu)建的中后臺(tái)權(quán)限管理系統(tǒng)框架。 支持vue-i18n國(guó)際化多語(yǔ)言、動(dòng)態(tài)路由鑒權(quán)、4種布局模板及tab頁(yè)面緩存 等功

    2023年04月13日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包