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

vue組件發(fā)布成npm包

 更新時(shí)間:2024年01月26日 10:48:51   作者:YUJIAN。  
平常使用Vue開(kāi)發(fā)時(shí),一個(gè)項(xiàng)目中多個(gè)地方需要用到的相同組件通常我們會(huì)封裝為一個(gè)公共組件,所以我們可以將封裝好的組件打包發(fā)布至npm,本文主要介紹了vue組件發(fā)布成npm包,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

工作中多個(gè)項(xiàng)目用到了同一個(gè)組件,每次修復(fù)bug或者增加新功能后都需要同步更新每個(gè)項(xiàng)目的代碼,然后想到可以通過(guò)發(fā)布成npm包的形式來(lái)實(shí)現(xiàn)代碼統(tǒng)一。此文以蘋(píng)果電腦為例,如果是windows系統(tǒng),可能略有差別。

一、環(huán)境準(zhǔn)備

1.首先最基本的需要安裝nodejs,版本推薦 v10 以上,因?yàn)樾枰惭bvue-cli

2.安裝vue-cli

npm install -g @vue/cli

可能會(huì)報(bào)錯(cuò),如下:

在這里插入圖片描述

這是因?yàn)闆](méi)有權(quán)限,重新執(zhí)行如下命令:

sudo npm install -g @vue/cli

在這里插入圖片描述

輸入密碼,按回車(chē)即可

二、初始化項(xiàng)目

1.構(gòu)建項(xiàng)目

vue create vue-link-demo

這里可以選擇vue2或者vue3,我這里選擇的vue3

在這里插入圖片描述

構(gòu)建完成后的目錄如下:

在這里插入圖片描述

2.開(kāi)發(fā)組件/加入組件

可以將已經(jīng)編寫(xiě)好的組件移動(dòng)到components目錄下,或者新建一個(gè)vue組件,步驟是一樣的。

例如我這里新建了一個(gè)HelloWorld.vue組件,需要注意的是,組件必須有name,這將會(huì)是用戶使用的組件名稱

在這里插入圖片描述

然后修改App.vue

在這里插入圖片描述

運(yùn)行項(xiàng)目npm run serve,可以看到正常運(yùn)行

在這里插入圖片描述

最后一步,增加在src文件夾下新建index.js文件

// src/index.js
import HellowWorld from '@/components/HellowWorld.vue';
 
// 將引入的組件模塊存儲(chǔ),如果是組件庫(kù),則在這里引入多個(gè)組件即可
const components = [ HellowWorld ];
 
const install = (Vue,options) => {
  if (install.installed) return;
  install.installed = true
  components.forEach(component => {
  // 這里可以看出,為什么上文強(qiáng)調(diào)組件必須有name
    Vue.component(component.name, component)
  })
}
// 如果是直接引入的vue.js方式,則會(huì)掛到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. 修改配置文件

將項(xiàng)目根目錄下的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 自帶的打包命令,此命令會(huì)將入口文件打包成一個(gè)庫(kù)碼,具體可參考官網(wǎng)說(shuō)明vue-cli官方文檔–name 指的是打包后的文件名
–dest 指文件夾的名稱

緊跟的src/index.js 指的是執(zhí)行上文新建的index文件,暴露install方法

在這里插入圖片描述

執(zhí)行命令

npm run start

執(zhí)行成功之后會(huì)在項(xiàng)目根目錄增加lib文件夾:

在這里插入圖片描述

如果組件庫(kù)過(guò)大,可能會(huì)報(bào)錯(cuò):allocation failure scavenge might not succeed??梢酝ㄟ^(guò)關(guān)閉內(nèi)聯(lián)css(下文有介紹)或者修改--max_old_space_size=10000(可自行百度)嘗試解決

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  // 為false則強(qiáng)制內(nèi)聯(lián),區(qū)別是最終lib文件夾中不會(huì)生成單獨(dú)的css文件
  // 設(shè)置為true,則不會(huì)內(nèi)聯(lián)css,最紅lib文件如上圖會(huì)有單獨(dú)的css文件生成,用戶使用組件包時(shí)需要在main.js中手動(dòng)引入:import 'vue-libs-demo/lib/vue-libs-demo.css'
  css: { extract: true }
})
  • 修改package.json文件中main配置項(xiàng)——外部訪問(wèn)項(xiàng)目包的入口文件;
// 最終lib文件夾生成的umd.js
"main": "lib/vue-link-demo.umd.js"

三、調(diào)試

1、執(zhí)行打包命令

// 開(kāi)發(fā)環(huán)境執(zhí)行
npm run start 
// 正式發(fā)布執(zhí)行 npm run build

2、發(fā)布本地連接包

npm link

3、測(cè)試項(xiàng)目

按上面構(gòu)建項(xiàng)目的步驟重新新建一個(gè)項(xiàng)目用于測(cè)試(或者用隨便一個(gè)就項(xiàng)目都行),然后在測(cè)試項(xiàng)目的目錄終端執(zhí)行

npm link vue-link-demo

然后修改測(cè)試項(xiàng)目的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寫(xiě)法略有不同哦

在App.vue中使用:

<template>
  <div class="container">
    <HelloWorld msg="測(cè)試組件" />
  </div>
</template>

然后運(yùn)行項(xiàng)目

npm run serve

四、發(fā)布使用

測(cè)試沒(méi)問(wèn)題后就可以發(fā)布到nodejs了

1、注冊(cè)

注冊(cè)npm賬號(hào) 點(diǎn)擊注冊(cè)

2、本地登陸

按步驟注冊(cè)完成以后,打開(kāi)命令行工具,并定位到項(xiàng)目目錄
中間會(huì)需要輸入用戶名、密碼、郵箱、郵箱驗(yàn)證碼

在這里插入圖片描述

如果中間出錯(cuò)的話,可能是由于設(shè)置了淘寶鏡像,重新設(shè)置一下即可:

npm config set registry https://registry.npmjs.org/

3、發(fā)布

執(zhí)行命令

npm publish

在這里插入圖片描述

顯示正在發(fā)布中。
可能會(huì)報(bào)錯(cuò)如下,是由于命名沖突了:

在這里插入圖片描述

驗(yàn)證是否是由于命名問(wèn)題導(dǎo)致的,可以執(zhí)行命令:

npm view react

在這里插入圖片描述

果不其然,修改名稱即可。修改完后重新發(fā)布npm publish

在這里插入圖片描述

最后一行出現(xiàn) +包名@版本號(hào) 即表示發(fā)布成功了
登陸npmjs,可以看到發(fā)布成功了。

在這里插入圖片描述

4.使用

在測(cè)試項(xiàng)目中卸載連接包

npm unlink vue-link-demo

然后安裝發(fā)布成功的包

npm install vue-link-demo --save

最后運(yùn)行

npm run serve

可以正確顯示即表示成功。
中間可能會(huì)出現(xiàn)一些問(wèn)題,但是如果按照文章的步驟來(lái),流程應(yīng)該是沒(méi)錯(cuò)的,可以排查一下代碼錯(cuò)誤。

到此這篇關(guān)于vue組件發(fā)布成npm包的文章就介紹到這了,更多相關(guān)vue發(fā)布成npm包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue.js實(shí)現(xiàn)的購(gòu)物車(chē)功能詳解

    Vue.js實(shí)現(xiàn)的購(gòu)物車(chē)功能詳解

    這篇文章主要介紹了Vue.js實(shí)現(xiàn)的購(gòu)物車(chē)功能,結(jié)合實(shí)例形式分析了vue.js購(gòu)物車(chē)的原理、數(shù)值計(jì)算及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-01-01
  • vue中v-html妙用及空白行消除方式

    vue中v-html妙用及空白行消除方式

    這篇文章主要介紹了vue中v-html妙用及空白行消除方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 在vue項(xiàng)目中promise解決回調(diào)地獄和并發(fā)請(qǐng)求的問(wèn)題

    在vue項(xiàng)目中promise解決回調(diào)地獄和并發(fā)請(qǐng)求的問(wèn)題

    這篇文章主要介紹了在vue項(xiàng)目中promise解決回調(diào)地獄和并發(fā)請(qǐng)求的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 基于Vue-cli快速搭建項(xiàng)目的完整步驟

    基于Vue-cli快速搭建項(xiàng)目的完整步驟

    這篇文章主要給大家介紹了關(guān)于如何基于Vue-cli快速搭建項(xiàng)目的完整步驟,文中通過(guò)示例代碼以及圖片將搭建的步驟一步步介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • 使用Vue 自定義文件選擇器組件的實(shí)例代碼

    使用Vue 自定義文件選擇器組件的實(shí)例代碼

    這篇文章主要介紹了使用Vue 自定義文件選擇器組件的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • vue中將網(wǎng)頁(yè)打印成pdf實(shí)例代碼

    vue中將網(wǎng)頁(yè)打印成pdf實(shí)例代碼

    本篇文章主要介紹了vue中將網(wǎng)頁(yè)打印成pdf實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 在vue中實(shí)現(xiàn)點(diǎn)擊選擇框阻止彈出層消失的方法

    在vue中實(shí)現(xiàn)點(diǎn)擊選擇框阻止彈出層消失的方法

    今天小編就為大家分享一篇在vue中實(shí)現(xiàn)點(diǎn)擊選擇框阻止彈出層消失的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue3點(diǎn)擊出現(xiàn)彈窗后背景變暗且不可操作的實(shí)現(xiàn)代碼

    vue3點(diǎn)擊出現(xiàn)彈窗后背景變暗且不可操作的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue3點(diǎn)擊出現(xiàn)彈窗后背景變暗且不可操作的實(shí)現(xiàn)代碼,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • vue中子組件傳遞數(shù)據(jù)給父組件的講解

    vue中子組件傳遞數(shù)據(jù)給父組件的講解

    今天小編就為大家分享一篇關(guān)于vue中子組件傳遞數(shù)據(jù)給父組件的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • vue項(xiàng)目啟動(dòng)時(shí)無(wú)法識(shí)別es6的擴(kuò)展語(yǔ)法的解決

    vue項(xiàng)目啟動(dòng)時(shí)無(wú)法識(shí)別es6的擴(kuò)展語(yǔ)法的解決

    啟動(dòng)項(xiàng)目時(shí)遇到ES6的拓展運(yùn)算符報(bào)錯(cuò)可以通過(guò)切換到淘寶鏡像,以及在項(xiàng)目根目錄下新增.babelrc和postcss.config.js文件來(lái)解決,這些操作有助于正確配置項(xiàng)目環(huán)境,從而避免報(bào)錯(cuò),并保證項(xiàng)目的順利運(yùn)行,希望這些經(jīng)驗(yàn)?zāi)軌驇椭接龅较嗤瑔?wèn)題的開(kāi)發(fā)者
    2024-10-10

最新評(píng)論