創(chuàng)建多組件npm組件庫

很久很久以前,就想發(fā)一個(gè)的,但總是被娛樂的自己做牽制。
想著現(xiàn)在發(fā)~~~
還不錯(cuò),忙里偷閑,趕緊記憶一波~

回到正題

由于是組件嘛,就不要那么麻煩 vue init webpack xxx還得刪一堆東西,所以使用webpack-simple版本來構(gòu)建一個(gè)項(xiàng)目就好了。

目錄結(jié)構(gòu)

以上呢,寫了三個(gè)組件,aaa文件包含aaa.vue以及index.js

//aaa.vue
<template>
  <div>
    <span>這是aaa組件</span>
    <span>{{con}}</span>
    <slot></slot>
  </div>
</template>

<script>
export default {
  name: 'aaa',
  props:{
    con:{
      type: String,
      default:'aaa'
    }
  },
};
</script>
//aaa.js
import aaa from './aaa.vue';
aaa.install = Vue => Vue.component(aaa.name, aaa);
export default aaa;

組件bbbccc雷同,就不一一介紹了。
當(dāng)然以上組件導(dǎo)出的方法,也可以借鑒這篇文章當(dāng)中的 require.context方式來導(dǎo)出。減少冗長而重復(fù)的代碼。

src目錄下新建index.js,供webpack中的entry所用。當(dāng)然你也可以直接修改main.js中的代碼,但是不利于調(diào)試,這里就不建議你這么做了。

//index.js
import aaa from "./components/aaa"
import bbb from "./components/bbb"
import ccc from "./components/ccc"

// 1、添加組件
const components = [
  aaa,
  bbb,
  ccc
]

// 2、可以使用Vue.use進(jìn)行全局安裝了。需要第3步
const install = function (Vue, opt = {}){
  components.map( component => {
    Vue.component(component.name, component)
  })
}

// 3、支持使用標(biāo)簽方式引入   這一步判斷window.Vue是否存在,因?yàn)橹苯右胿ue.min.js, 它會(huì)把Vue綁到Window上,我們直接引用打包好的js才能正常跑起來。
if(typeof window !== 'undefined' && window.Vue) {
  install.use(window.Vue)
}


export default {
  install,  //總體
  ...components //按需
}

然后我們需要修改配置文件webpack.config.js

//webpack.config.js
{
  entry: process.env.NODE_ENV === 'development' ? './src/main.js' : './src/index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    filename: 'yin.js',
    library: 'yin', // 指定的就是你使用require時(shí)的模塊名
    libraryTarget: 'umd', // 指定輸出格式  libraryTarget會(huì)生成不同umd的代碼,可以只是commonjs標(biāo)準(zhǔn)的,也可以是指amd標(biāo)準(zhǔn)的,也可以只是通過script標(biāo)簽引入的
    umdNamedDefine: true // 會(huì)對(duì) UMD 的構(gòu)建過程中的 AMD 模塊進(jìn)行命名。否則就使用匿名的 define
  }
}

最后一步了,修改 package.json中的配置

{
  "private": false,  //默認(rèn)為true,修改為公有
  "main": "dist/yin.js",
  "files": [
    "dist/*",
    "src/*",
    "*.json",
    "*.js"
  ],
}

打包項(xiàng)目
num run build

這么一來,組件方面的需求就已經(jīng)寫完了。現(xiàn)在來說說怎么上傳到npm。

在組件的根目錄下的終端中,

// 登錄npm
npm login

// 發(fā)布組件
npm publish

當(dāng)然這一步是有可能失敗的,除非你定義的組件名,在npm中不重復(fù)。

更新組件

// 修改版本號(hào)
npm version

// 發(fā)布組件
npm publish

刪除npm包

// 強(qiáng)制刪除,這個(gè)是撤銷24小時(shí)發(fā)布的包
npm unpublish --force 

// 刪除已發(fā)布好的包
npx force-unpublish xxxxxx
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容