2022-05-24 隨筆 使用vite構(gòu)建一個npm包

構(gòu)建npm包

使用vite創(chuàng)建一個vue項目

npm create vite
# Project name: test-btn
# Select a framework: vue
# Select a variant: vue
cd vue
npm i

在 components 目錄下創(chuàng)建一個 TestBtn.vue 組件

<template>
  <button>我是測試要發(fā)布的按鈕組件</button>
</template>

<script>
export default {
  name: 'test-btn'
}
</script> 

在 src 目錄下創(chuàng)建一個 index.js

//index.js
import TestBtn from "./components/TestBtn.vue"; // 引入封裝好的組件

export { TestBtn } //實現(xiàn)按需引入*


const components = [TestBtn];
const install = function(App, options) {
    components.forEach((component) => {
        App.component(component.name,component);
    });
};
export default { install } // 批量的引入*

修改 vitee.config.js

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

export default defineConfig({
  plugins: [vue()],
  build: {
    lib: {
      entry: path.resolve(__dirname, 'src/index.js'),
      name: 'TestBtn',
      fileName: (format) => `test-btn.${format}.js`
    },
    rollupOptions: {
      // 確保外部化處理那些你不想打包進庫的依賴
      external: ['vue'],
      output: {
        // 在 UMD 構(gòu)建模式下為這些外部化的依賴提供一個全局變量
        globals: {
          vue: 'Vue'
        }
      }
    }
  }
})

修改 package.json

{
  "name": "test-btn-ui",
  "version": "0.0.1",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "serve": "vite preview"
  },
  "files": [
    "dist"
  ],
  "main": "./dist/test-btn.umd.js",
  "module": "./dist/test-btn.es.js",
  "exports": {
    ".": {
      "import": "./dist/test-btn.es.js",
      "require": "./dist/test-btn.umd.js"
    }
  },
  "dependencies": {
    "vue": "^3.2.25"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^2.3.3",
    "vite": "^2.9.9"
  }
}

打包

使用 npm run build 生成 dist 文件(注意修改 .gitignore 文件泼橘,需要提交 dist 文件)迈勋,提交到 githubgitee

使用構(gòu)建的包

在 package.json 中添加依賴

package.json 中的 devDependencies 下添加 "test-btn": "git+https://gitee.com/narcissus209/test-btn.git"

  ...
  "devDependencies": {
    "test-btn": "git+https://gitee.com/narcissus209/test-btn.git",
    ...
  }

在 App.vue 中局部引入

<template>
  <!-- 如果是全局引入需要使用中線連接靡菇,如果是局部引入可以使用駝峰命名 -->
  <test-btn />
</template>

<script setup>
import { TestBtn } from 'test-btn'
</script>

在 main.js 中全局引入

import { createApp } from 'vue'
import App from './App.vue'
import TestBtn from 'test-btn'

const app = createApp(App)
app.use(TestBtn)

app.mount('#app')
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厦凤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子狈网,更是在濱河造成了極大的恐慌笨腥,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件士鸥,死亡現(xiàn)場離奇詭異谆级,居然都是意外死亡,警方通過查閱死者的電腦和手機脚仔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門舆绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吕朵,你說我怎么就攤上這事猎醇。” “怎么了努溃?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵硫嘶,是天一觀的道長。 經(jīng)常有香客問我梧税,道長沦疾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任第队,我火速辦了婚禮哮塞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘斥铺。我一直安慰自己彻桃,他們只是感情好,可當我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布邻眷。 她就那樣靜靜地躺著,像睡著了一般剔交。 火紅的嫁衣襯著肌膚如雪肆饶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天岖常,我揣著相機與錄音驯镊,去河邊找鬼。 笑死,一個胖子當著我的面吹牛板惑,可吹牛的內(nèi)容都是我干的橄镜。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼冯乘,長吁一口氣:“原來是場噩夢啊……” “哼洽胶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起裆馒,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤姊氓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喷好,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翔横,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年梗搅,在試婚紗的時候發(fā)現(xiàn)自己被綠了禾唁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡些膨,死狀恐怖蟀俊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情订雾,我是刑警寧澤肢预,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布,位于F島的核電站洼哎,受9級特大地震影響烫映,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜噩峦,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一锭沟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧识补,春花似錦族淮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至切油,卻和暖如春蝙斜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背澎胡。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工孕荠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娩鹉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓稚伍,卻偏偏與公主長得像弯予,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子槐瑞,可洞房花燭夜當晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容