vue組件發(fā)布成npm包
前言
工作中多個項目用到了同一個組件,每次修復bug或者增加新功能后都需要同步更新每個項目的代碼,然后想到可以通過發(fā)布成npm包的形式來實現(xiàn)代碼統(tǒng)一。此文以蘋果電腦為例,如果是windows系統(tǒng),可能略有差別。
一、環(huán)境準備
1.首先最基本的需要安裝nodejs,版本推薦 v10 以上,因為需要安裝vue-cli
2.安裝vue-cli
npm install -g @vue/cli
可能會報錯,如下:
這是因為沒有權限,重新執(zhí)行如下命令:
sudo npm install -g @vue/cli
輸入密碼,按回車即可
二、初始化項目
1.構建項目
vue create vue-link-demo
這里可以選擇vue2或者vue3,我這里選擇的vue3
構建完成后的目錄如下:
2.開發(fā)組件/加入組件
可以將已經編寫好的組件移動到components目錄下,或者新建一個vue組件,步驟是一樣的。
例如我這里新建了一個HelloWorld.vue組件,需要注意的是,組件必須有name,這將會是用戶使用的組件名稱
然后修改App.vue
運行項目npm run serve,可以看到正常運行
最后一步,增加在src文件夾下新建index.js文件
// src/index.js import HellowWorld from '@/components/HellowWorld.vue'; // 將引入的組件模塊存儲,如果是組件庫,則在這里引入多個組件即可 const components = [ HellowWorld ]; const install = (Vue,options) => { if (install.installed) return; install.installed = true components.forEach(component => { // 這里可以看出,為什么上文強調組件必須有name Vue.component(component.name, component) }) } // 如果是直接引入的vue.js方式,則會掛到window下 if (typeof window !== 'undefined' && window.Vue) { install(window.Vue) } export default { // 使用Vue.use必須具有install方法 // https://cn.vuejs.org/v2/api/#Vue-use install, ...components }
3. 修改配置文件
將項目根目錄下的package.json文件:
1. scripts修改start和build命令: ```c "scripts": { "serve": "vue-cli-service serve", "start": "vue-cli-service build --target lib --name vue-link-demo --dest lib src/index.js --watch", "build": "vue-cli-service build --target lib --name vue-link-demo --dest lib src/index.js", "build:app": "vue-cli-service build", "lint": "vue-cli-service lint" }
這里的–target lib是 vue-cli 自帶的打包命令,此命令會將入口文件打包成一個庫碼,具體可參考官網說明vue-cli官方文檔–name 指的是打包后的文件名
–dest 指文件夾的名稱
緊跟的src/index.js 指的是執(zhí)行上文新建的index文件,暴露install方法
執(zhí)行命令
npm run start
執(zhí)行成功之后會在項目根目錄增加lib文件夾:
如果組件庫過大,可能會報錯:allocation failure scavenge might not succeed。可以通過關閉內聯(lián)css(下文有介紹)或者修改--max_old_space_size=10000(可自行百度)嘗試解決
const { defineConfig } = require('@vue/cli-service') module.exports = defineConfig({ transpileDependencies: true, // 為false則強制內聯(lián),區(qū)別是最終lib文件夾中不會生成單獨的css文件 // 設置為true,則不會內聯(lián)css,最紅lib文件如上圖會有單獨的css文件生成,用戶使用組件包時需要在main.js中手動引入:import 'vue-libs-demo/lib/vue-libs-demo.css' css: { extract: true } })
- 修改package.json文件中main配置項——外部訪問項目包的入口文件;
// 最終lib文件夾生成的umd.js "main": "lib/vue-link-demo.umd.js"
三、調試
1、執(zhí)行打包命令
// 開發(fā)環(huán)境執(zhí)行 npm run start // 正式發(fā)布執(zhí)行 npm run build
2、發(fā)布本地連接包
npm link
3、測試項目
按上面構建項目的步驟重新新建一個項目用于測試(或者用隨便一個就項目都行),然后在測試項目的目錄終端執(zhí)行
npm link vue-link-demo
然后修改測試項目的main.js:
import olMap from 'ol-map-vue' import 'ol-map-vue/lib/ol-map.css' const app = createApp(App) app.use(olMap) app.mount('#app') // 如果為vue2寫法略有不同哦
在App.vue中使用:
<template> <div class="container"> <HelloWorld msg="測試組件" /> </div> </template>
然后運行項目
npm run serve
四、發(fā)布使用
測試沒問題后就可以發(fā)布到nodejs了
1、注冊
注冊npm賬號 點擊注冊
2、本地登陸
按步驟注冊完成以后,打開命令行工具,并定位到項目目錄
中間會需要輸入用戶名、密碼、郵箱、郵箱驗證碼
如果中間出錯的話,可能是由于設置了淘寶鏡像,重新設置一下即可:
npm config set registry https://registry.npmjs.org/
3、發(fā)布
執(zhí)行命令
npm publish
顯示正在發(fā)布中。
可能會報錯如下,是由于命名沖突了:
驗證是否是由于命名問題導致的,可以執(zhí)行命令:
npm view react
果不其然,修改名稱即可。修改完后重新發(fā)布npm publish
最后一行出現(xiàn) +包名@版本號
即表示發(fā)布成功了
登陸npmjs,可以看到發(fā)布成功了。
4.使用
在測試項目中卸載連接包
npm unlink vue-link-demo
然后安裝發(fā)布成功的包
npm install vue-link-demo --save
最后運行
npm run serve
可以正確顯示即表示成功。
中間可能會出現(xiàn)一些問題,但是如果按照文章的步驟來,流程應該是沒錯的,可以排查一下代碼錯誤。
到此這篇關于vue組件發(fā)布成npm包的文章就介紹到這了,更多相關vue發(fā)布成npm包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在vue項目中promise解決回調地獄和并發(fā)請求的問題
這篇文章主要介紹了在vue項目中promise解決回調地獄和并發(fā)請求的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11vue3點擊出現(xiàn)彈窗后背景變暗且不可操作的實現(xiàn)代碼
這篇文章主要介紹了vue3點擊出現(xiàn)彈窗后背景變暗且不可操作的實現(xiàn)代碼,本文通過實例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08