npm發布vue組件包

前言

?? 現在前端開發基本離不開npm插件包,有的時候自己寫了一個組件在多個項目中都有用到,簡單粗暴的做法就是CV大法啦。不過這種不系統,不易維護的做法我們是不在這里討論的。這里我以實際開發項目做的一個vue組件來陳述。

開發環境

?? vue-cli3.x+ (2.x的也差不多)

首先創建項目這個一張圖描述了

創建項目

更改項目結構

?? 其實呢改不改都無所謂的,只不過改了看上去更牛逼些。我們把src目錄改成example模塊,在根目錄下新增一個packages目錄。新增一個vue.config.js文件、新增一個.npmignore文件


目錄結構

packages 目錄說明

?? 這里是存放我們要發布的組件,可能你要發布多個組件這里以組件名區分開,不過個人不建議把多個npm組件弄在一起,除非你是想做大工具庫API,我個人推薦一個項目一個組件當然這個組件是獨立的


packages結構
// package/vue-aliplay-player/index.js    // 拋出 vue-aliplay-player
import vueAliplayer from './src/player.vue'

 /**
  * 預覽做全局組件使用,按需加載組件可以不需要這個install
  */
vueAliplayer.install = function(vue) { 
    Vue.component(vueAliplayer.name, vueAliplayer)
}
export default vueAliplayer

// packages/index.js  // 拋出所有組件,做多個組件使用 
import vueAliplayer from './vue-aliplay-player'

const components = [
    vueAliplayer
]

// 定義 install 方法,接收 Vue 作為參數。如果使用 use 注冊插件,則所有的組件都將被注冊
const install = function(Vue) {
    // 判斷是否安裝
    if (install.installed) return
    // 遍歷注冊全局組件
    components.map(component => Vue.component(component.name, component))
}

// 判斷是否是直接引入文件
if (typeof window !== 'undefined' && window.Vue) {
    install(window.Vue)
}

export default {
    // 導出的對象必須具有 install,才能被 Vue.use() 方法安裝
    install,
    // 以下是具體的組件列表
    ...components
}

打包前開發測試

?? 按需加載

按需加載

?? 全局:main.js

全局注冊

重點 打包

?? 根目錄下的package.json scripts 新增一個命令

"lib": "vue-cli-service build --target lib --name vue-aliplay-player --dest lib packages/vue-aliplay-player/index.js"
新增命令

打包后的效果查看

npm run lib

?? 會在根目錄下多個lib文件


lib文件里面的內容

打包后測試調用

?? 按需加載

按需加載

?? 全局:main.js
全局注冊

發布前調整

1、更改根目錄的package.json 信息


package信息調整

2、.npmignore 過濾發布文件

.DS_Store
node_modules/
examples/
packages/
public/
vue.config.js
babel.config.js
*.map
*.html
 
# local env files
.env.local
.env.*.local
 
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
 
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*

發布

注意: npm 源 一定要是 https://registry.npmjs.org/
查看源: npm config get registry
更改源: npm set registry https://registry.npmjs.org/

1、 npm login 
2、 npm publish

總結 【多實踐多學習】

1、npm發布vue組件包不難,甚至都可不基于vue構建項目(項目構建只是為了方便調試、構建、管理), 只需如下結構


不是有vue項目構建

2、網上發布vue npm包的貼很多,但是大都是CV【真是坑爹】,或者是較老的用法還有就是沒有講到核心;
3、前端入門很快,進階很難,別以為看了兩篇教程就自以為功夫滿級可以肉抗了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容