使用Vue CLI 3將基于element-ui二次封裝的組件發(fā)布到npm

安裝依賴

yarn global add @vue/cli

vue create qiyun-el-ui

vue ui

安裝element-ui

這里使用官方提供的的插件安裝:

http://element.eleme.io/#/zh-CN/component/quickstart#shi-yong-vue-cli-at-3

https://github.com/ElementUI/vue-cli-plugin-element


這樣在項目中撒妈,就會新建一個plugins文件夾违崇,里面有個element.js 文件急迂,如果想手動引入,就在這里添加要依賴的組件端蛆,這里是為了調試組件:

importVuefrom'vue'

import{

Button,

Dialog

}from'element-ui'

Vue.use(Button)

Vue.use(Dialog)

由于我們是基于element-ui的部分組件做的二次封裝刽漂,所以最好還是按需引入所依賴的組件比較好眨层。

編寫組件

在src的同級下面新建packages目錄锁右,在這里添加自己封裝的要發(fā)布的組件。

例如很魂,新建?qe-modal?文件夾扎酷,再接著新建?src?文件夾,里面新建?qe-modal.vue遏匆,在這里寫組件的代碼:

<template>

<el-dialog

:title="title"

:visible="dialogVisible"

@close="$emit('update:dialogVisible', false)"

:width="width">

<slot name="modal-body"></slot>

<div slot="footer" class="dialog-footer">

<slot name="modal-footer">

<el-button @click="$emit('update:dialogVisible', false)" size="small">取 消</el-button>

<el-button type="primary" @click="$emit('confirm')" size="small" :disabled="confirmDisable || beforeSendDisable">{{ beforeSendDisable? "處理中..." : "確 定" }}</el-button>

</slot>

</div>

</el-dialog>

</template>

<script>

export default {

name: 'qeModal',

props: {

dialogVisible: Boolean,

title: String,

width: {

type: String,

default: '580px'

},

beforeSendDisable: {

type: Boolean,

default: false

},

confirmDisable: {

type: Boolean,

default: false

}

}

}

</script>

在?qe-modal?根目錄下新建?index.js?法挨,里面注冊單獨的該組件,方便使用時可以單獨引用:

importqeModalfrom'./src/qe-modal'

qeModal.install =function(Vue){

Vue.component(qeModal.name, qeModal)

}

exportdefaultqeModal

這樣一個組件就添加完成了幅聘,然后需要在?packages?的根目錄下添加一個總的?index.js凡纳,這里是全局注冊的地方,使用時可以全局引入帝蒿,其實就跟?element-ui?的兩種方式一樣:

importqeModalfrom'./qe-modal'

constcomponents = [

qeModal

]

constinstall =function(Vue){

components.forEach(component=>{

Vue.component(component.name, component);

});

}

if(typeofwindow!=='undefined'&&window.Vue) {

install(window.Vue);

}

exportdefault{

install,

qeModal

}

后面再添加組件荐糜,在這里也要再注冊一下,而element-ui?源碼中是動態(tài)引入的葛超,我們的項目組件還沒那么多暴氏,可以先一個個手動引入,如果后面數量多了绣张,不好維護答渔,可以參考?element-ui?的源碼實現,我在這里做了一些簡單的解釋胖替。

配置 npm

在 package.json 里面的 script 里面加一個 lib選項,方便每次構建:

"scripts": {

// ...,

"lib":"vue-cli-service build --target lib --name qiyun-el-ui --dest lib ./packages/index.js"

},

其中?--name?后面是你最后想要生成文件的名字,并用?--dest lib?修改了構建的目錄独令。

然后在?package.json?里面添加一些npm包發(fā)布的相關信息端朵,比如作者、版本等:

其中最重要的是:

"main": "lib/qiyun-el-ui.common.js",

這里的路徑要和上面構建出來的目錄和文件名對應上燃箭。

里面的配置項冲呢,在網上找了個例子:

{

"name":"maucash",

"description":"maucash中常用組件抽取",

"version":"1.0.2",

"author":"kuangshp <dmcdodo@163.com>",

// 開源協(xié)議

"license":"MIT",

// 因為組件包是公用的,所以private為false

"private":false,

// 配置main結點招狸,如果不配置敬拓,我們在其他項目中就不用import XX from '包名'來引用了,只能以包名作為起點來指定相對的路徑

"main":"dist/maucash.js",

"scripts": {

"dev":"cross-env NODE_ENV=development webpack-dev-server --open --hot",

"build":"cross-env NODE_ENV=production webpack --progress --hide-modules"

},

"dependencies": {

"axios":"^0.18.0",

"iview":"^2.14.1",

"style-loader":"^0.23.1",

"url-loader":"^1.1.2",

"vue":"^2.5.11"

},

// 指定代碼所在的倉庫地址

"repository": {

"type":"git",

"url":"git+git@git.wolaidai.com:maucash/maucash.git"

},

// 指定打包后,包中存在的文件夾

"files": [

"dist",

"src"

],

// 指定關鍵詞

"keywords": [

"vue",

"maucash",

"code",

"maucash code"

],

// 項目官網的地址

"homepage":"https://github.com/kuangshp/maucash",

"browserslist": [

"> 1%",

"last 2 versions",

"not ie <= 8"

],

"devDependencies": {

"babel-core":"^6.26.0",

"babel-loader":"^7.1.2",

"babel-plugin-transform-runtime":"^6.23.0",

"babel-preset-env":"^1.6.0",

"babel-preset-stage-3":"^6.24.1",

"cross-env":"^5.0.5",

"css-loader":"^0.28.7",

"file-loader":"^1.1.4",

"node-sass":"^4.5.3",

"sass-loader":"^6.0.6",

"vue-loader":"^13.0.5",

"vue-template-compiler":"^2.4.4",

"webpack":"^3.6.0",

"webpack-dev-server":"^2.9.1"

}

}

發(fā)布到npm

到這塊后面的網上有很多更細致的教程裙戏,我就不在這里贅述了乘凸。下面給出兩個文章的鏈接,供參考累榜。

1营勤、到npm上注冊一個賬號

2、登錄

npm login

3壹罚、添加用戶信息

npm adduser

4葛作、發(fā)布到遠程倉庫(npm)上

npm publish

5、刪除遠程倉庫的包

npx force-unpublish package-name '原因描述'

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末猖凛,一起剝皮案震驚了整個濱河市赂蠢,隨后出現的幾起案子,更是在濱河造成了極大的恐慌辨泳,老刑警劉巖虱岂,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異漠吻,居然都是意外死亡量瓜,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門途乃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绍傲,“玉大人,你說我怎么就攤上這事耍共√瘫” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵试读,是天一觀的道長杠纵。 經常有香客問我,道長钩骇,這世上最難降的妖魔是什么比藻? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任铝量,我火速辦了婚禮,結果婚禮上银亲,老公的妹妹穿的比我還像新娘慢叨。我一直安慰自己,他們只是感情好务蝠,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布拍谐。 她就那樣靜靜地躺著,像睡著了一般馏段。 火紅的嫁衣襯著肌膚如雪轩拨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天院喜,我揣著相機與錄音亡蓉,去河邊找鬼。 笑死够坐,一個胖子當著我的面吹牛寸宵,可吹牛的內容都是我干的。 我是一名探鬼主播元咙,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼梯影,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庶香?” 一聲冷哼從身側響起甲棍,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎赶掖,沒想到半個月后感猛,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡奢赂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年陪白,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膳灶。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡咱士,死狀恐怖,靈堂內的尸體忽然破棺而出轧钓,到底是詐尸還是另有隱情序厉,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布毕箍,位于F島的核電站弛房,受9級特大地震影響,放射性物質發(fā)生泄漏而柑。R本人自食惡果不足惜文捶,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一荷逞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧粹排,春花似錦颅围、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筏养。三九已至斧抱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間渐溶,已是汗流浹背辉浦。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留茎辐,地道東北人宪郊。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像拖陆,于是被迫代替她去往敵國和親弛槐。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355