欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于vue-cli3創(chuàng)建libs庫的實(shí)現(xiàn)方法

 更新時(shí)間:2019年12月04日 11:10:23   作者:mrLwc  
這篇文章主要介紹了基于vue-cli3創(chuàng)建libs庫的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言:當(dāng)我寫這篇博客之前我想過這些問題,是否你也被困擾過呢?

1:當(dāng)你有自己覺得寫的好的組件,是不是有一種想存下來,方便下一次使用的情況?

2:是不是大多數(shù)時(shí)候都是使用cv大法?from "a" to "b" to “c” to anyWhere.....

3:是不是你的的組件跟你npm install下來的有很大區(qū)別?

4:是不是想定義一套規(guī)則來管理公司項(xiàng)目的組件?(當(dāng)然前提你得是,,,,大佬)

一:創(chuàng)建默認(rèn)項(xiàng)目

使用 vue create xxx 創(chuàng)建一個(gè)默認(rèn)項(xiàng)目

二:修改原始目錄結(jié)構(gòu)

創(chuàng)建的默認(rèn)目錄如下,我們需要將原本的src目錄改為examples,然后創(chuàng)建packages目錄來編寫自己的組件庫文件,(其實(shí)目錄命名你開心就好,,)

好了,接下來劃重點(diǎn)!

三:配置example & packages

到這里你可能發(fā)現(xiàn)了,項(xiàng)目無法跑起來了,因?yàn)槲覀儧]有了原始默認(rèn)的入口文件

在根目錄下創(chuàng)建vue.config.js配置文件(vue-cli3的配置文件,在這里的配置會覆蓋腳手架webpack默認(rèn)的配置項(xiàng))。

//不熟悉配置的可官網(wǎng)查看 https://cli.vuejs.org/zh/config/#pages
module.exports = {
  pages: {
    index: {
     entry: 'examples/main.js',
     template: 'public/index.html',
     filename: 'index.html'
    }
   }
}

進(jìn)入packages目錄創(chuàng)建一個(gè)組件目錄(HelloWorld),一個(gè)index文件(用來暴露所有的組件),然后在組件目錄新建index(暴露出當(dāng)前組件)文件與src組件源碼。

 

在HelloWorld下面的index中引入組件。

import HelloWord from './src/HelloWorld.vue';
HelloWord.install = (Vue)=>{
  Vue.components(HelloWord.name,HelloWord)
}
export default HelloWord;

在packages目錄下面的index中引入所有的組件并注冊。

import HelloWorld from './HelloWorld';

// 將引入的組件模塊存儲,方便循環(huán)注冊所有組件
const components = [ HelloWorld ];

const install = (Vue,options)=>{
  if (install.installed) return;
  install.installed = true
  console.log(options)
  components.forEach(component => {
    Vue.component(component.name, component)
  })
}

// 如果是直接引入的
if (typeof window !== 'undefined' && window.Vue) {
  install(window.Vue)
}

export default {
  // 使用Vue.use必須具有install方法
  // https://cn.vuejs.org/v2/api/#Vue-use
  install,
  // 同時(shí)導(dǎo)出組件列表
  ...components
}

在examples中的入口文件main.js引入注冊的全局組件。

//main.js
...
import libs from "../packages"
...
Vue.use(libs,{a:'test'})

到現(xiàn)在項(xiàng)目基本已經(jīng)跑起來了,在項(xiàng)目中可以直接調(diào)用組件了,無需在components里注冊,平時(shí)開發(fā)中你的全局組件也可以這樣來注冊使用。

 

四:組件打包

vue-cli3中提供了構(gòu)建一個(gè)庫的方法 ,默認(rèn)是構(gòu)建應(yīng)用,這個(gè)方法提供的幾個(gè)配置項(xiàng)主要有以下幾個(gè)

target: 改為 lib 可啟用構(gòu)建庫模式;
name: 構(gòu)建庫輸出的文件名;
dest: 構(gòu)建的輸出目錄,默認(rèn)為 dist;
entry: 入口文件路徑;

vue-cli-service build --target lib --name myLib --dest libs [entry]

所以需要在項(xiàng)目的package.json文件中添加一條上面的執(zhí)行腳本

"scripts": {
  "lib": "vue-cli-service build --target lib --name common --dest lib packages/index.js"
}

vue-cli3的默認(rèn)配置是只對src目錄下的文件進(jìn)行編譯的,所有這里我們還需要在vue.config.js文件中將packages文件夾也加入loader編譯的配置(后測試可不加)。

chainWebpack:(config)=>{
  config.module
    .rule('js')
    .include
      .add('/packages/')
      .end()
    .use('babel')
      .loader('babel-loader')
      .tap(options=>{
          //TODO
          return options
      })
}

然后執(zhí)行npm run lib會在跟目錄下生成lib文件夾,lib會生成三種形式的文件(commonjs,umd,umd-min)

五:發(fā)布npm

有了上面的四步,基本上開發(fā)階段算是完成了,接下來就是如何讓你的庫有一個(gè)存儲的地方,方便下一次的復(fù)用,首先你應(yīng)該想到了 npm ,這個(gè)node包管理庫。

一個(gè)基礎(chǔ)的npm包,你首先需要知道package.json中這些配置的作用

name -----> 包的名稱,必須唯一,不能跟已有的npm包重名,否則發(fā)布不上去;

version -----> 包的版本,當(dāng)你需要迭代版本時(shí),必須修改這個(gè)值(可手動修改,可運(yùn)行以下命令修改);

$ npm version patch 會增加小版本 1.0.1:屬于小修改,不更改功能使用
$ npm version minor 會增加二級 1.1.0:可能添加了一些功能,不影響以前的使用。
$ npm version major 會增加大版本 2.0.0:可能改了API,輸入大范圍的修改。

main -----> 包的入口,當(dāng)你使用import xx from 'xxxx'的時(shí)候默認(rèn)引入的就是main文件;

private -----> 是否為私有包,如果傳到npm上必須改為false;

license ----->開源協(xié)議

author ------>作者 <可選>

description ----->包的描述 <可選>

keyworlds ----->關(guān)鍵字 <可選>

repository ----->包存放的倉庫地址

....... 還有很多配置項(xiàng)可自己查詢配置項(xiàng);

跟據(jù)上面的選項(xiàng),最終配置出的結(jié)果如下

{
  "name":"vue-libs-demo",
  "version":"0.1.0",
  "author":{
    "name":"mrlwc",
    "email":"845822761@qq.com"
  },
  "private":false,
  "license":"MIT",
  "description":"test vue lib",
  "keyWorlds":["test","vue","libs"],
  "main":"lib/common.umd.min.js"
}

npm 的發(fā)布也有需要忽略的敏感信息文件,所以需要添加.npmignore文件,排除開發(fā)環(huán)境下的文件內(nèi)容

# dir
examples/
packages/
public/
node_modules/

# Log 
filesnpm-debug.log*
yarn-debug.log*
yarn-error.log*
vue.config.js
babel.config.js
*.map

# Editor directories and files
.DS_Store
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.prettierrc

配置完后,就可以發(fā)布了,首先使用 npm login 一步步輸入賬號,密碼,郵箱(如果沒有賬號的直接去官網(wǎng)注冊即可),然后運(yùn)行 npm publish ,如果失敗也許是包重名。

現(xiàn)在你的組件包已經(jīng)發(fā)布成功了,在其他項(xiàng)目中使用 npm install vue-libs-demo 后在入口文件 Vue.use(xxx) 即可使用所有的組件。

六:發(fā)布git倉庫

你是否想過,公司的代碼或者組件庫放到公開平臺是不是有點(diǎn)不妥?畢竟這是公司賴以生存的寶貝不是?所以一般公司都會有自己的私有服務(wù)器,然后在上面搭建gitLab等一系列管理方式,所以公共組件庫同樣可以保存到這些倉庫中。然后修改依賴安裝路勁來下載這些公用組件。

下面我就用gitee這個(gè)平臺來進(jìn)行操作

首先去gitee去建立一個(gè)空的倉庫;

將自己的項(xiàng)目推送到倉庫中;

$ git remote add <repository path>
$ git push -u origin master

然后在自己的新項(xiàng)目中按下面的方式引入依賴后執(zhí)行npm install

好了到這里基本上就結(jié)束了?。ㄈ绻懈玫慕鉀Q方案,或者發(fā)現(xiàn)什么錯(cuò)誤的地方,可留言共同學(xué)習(xí))

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Vue CSR的微前端實(shí)現(xiàn)方案實(shí)踐

    基于Vue CSR的微前端實(shí)現(xiàn)方案實(shí)踐

    這篇文章主要介紹了基于Vue CSR的微前端實(shí)現(xiàn)方案實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • vue router 組件的高級應(yīng)用實(shí)例代碼

    vue router 組件的高級應(yīng)用實(shí)例代碼

    這篇文章主要介紹了vue-router 組件的高級應(yīng)用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 詳解如何用VUE寫一個(gè)多用模態(tài)框組件模版

    詳解如何用VUE寫一個(gè)多用模態(tài)框組件模版

    這篇文章主要介紹了詳解如何用VUE寫一個(gè)多用模態(tài)框組件模版,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue如何預(yù)覽后端傳來的二進(jìn)制圖片

    vue如何預(yù)覽后端傳來的二進(jìn)制圖片

    這篇文章主要介紹了vue如何預(yù)覽后端傳來的二進(jìn)制圖片,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue前后分離調(diào)起微信支付

    vue前后分離調(diào)起微信支付

    這篇文章主要為大家詳細(xì)介紹了vue前后分離調(diào)起微信支付,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • vue如何使用原生高德地圖你知道嗎

    vue如何使用原生高德地圖你知道嗎

    這篇文章主要為大家詳細(xì)介紹了vue如何使用原生高德地圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Vue使用枚舉類型實(shí)現(xiàn)HTML下拉框步驟詳解

    Vue使用枚舉類型實(shí)現(xiàn)HTML下拉框步驟詳解

    本文分步驟給大家介紹了Vue使用枚舉類型實(shí)現(xiàn)HTML下拉框的相關(guān)知識,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • vue3.0+vite2實(shí)現(xiàn)動態(tài)異步組件懶加載

    vue3.0+vite2實(shí)現(xiàn)動態(tài)異步組件懶加載

    學(xué)了vue寫項(xiàng)目這么久,忽然發(fā)現(xiàn)路由懶加載的寫法,節(jié)省了加載所有路由的時(shí)間。本文主要介紹了vue3.0+vite2實(shí)現(xiàn)動態(tài)異步組件懶加載,感興趣的可以了解一下
    2021-06-06
  • 關(guān)于iview和elementUI組件樣式覆蓋無效問題及解決

    關(guān)于iview和elementUI組件樣式覆蓋無效問題及解決

    這篇文章主要介紹了關(guān)于iview和elementUI組件樣式覆蓋無效問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue.js國際化 vue-i18n插件的使用詳解

    vue.js國際化 vue-i18n插件的使用詳解

    本篇文章主要介紹了vue.js國際化 vue-i18n插件的使用詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論