vue-cli3.x的構建第三方庫按需引用,自定義組件的探索

2021-12-26 肉卷的雜談志

背景:vue-cli3.x號稱無配置,特將原vue-cli2.x的Web Components進行遷移, 順帶解決下node-sass的問題參考:https://github.com/webpack-contrib/sass-loader(node-sass遷移為Dart-sass)https://blog.csdn.net/mlonly/article/details/88635809(構建組件庫)目的:構建一個能第三方組件庫(element-ui)進行二次封裝,同時能封裝自定義組件,的純js,css,image的組件庫,並分開暴露給外部引用

vue-cli3.x探索

3.x中babel配置項全升級新的@babel7.x由原來的babel-全變遷為@babel

vue.config.js即為所有配置區別於wepack的配置項,此配置項為對webpack的二次封裝

內部cli自動協調Dart-sass,不用再處理sass-loader問題

從2.x-3.x的遷徙,webpack其實還是4.x的版本,本質還是差不多,但3.x對配置項進行二次封裝簡化。但對於想高度自由化創建Web Components庫而言,增大了成本,需要解決兼容問題,babel升級問題,vue.config.js的改造問題

vue-cli3.x的改造結果

第一種結果參考上面連結構建組件庫,此方法構建的組件庫,當對package.json新建build方法,執行npm run build之後,產出為如下圖1.1

"scripts": {

"build": "vue-cli-service build --target lib --name ntr-component --dest lib packages/index.js",

"build:prod": "cross-env vue-cli-service build",

"dev": "vue-cli-service serve --open",

"prepublishOnly": "npm run build"

},

最終生成結果如下全為common.js,且體積龐大未,無法實現第三方庫的按需加載:

(1.1)

2.第二種對vue.config.js進行改造,自建components.json

{

"SwitchNo": "./packages/SwitchNo",

"Transfer": "./packages/Transfer",

"XScrollbar": "./packages/XScrollbar",

"index": "./packages/index"

}

將入口進行批量化整理,最後執行npm run build:prod 力圖像webpack的entry一樣實現組件的生成,結果如下圖

// 整理入口

const components = require('./components.json')

const entrys = {}

// const apps = []

Object.keys(components).forEach(item => {

// entrys[item] = { entry: components[item], filename: item + '.js' }

entrys[item] = components[item]

// apps.push(components[item])

})

module.exports = {

pages: process.env.NODE_ENV === 'production' ? entrys : {

index: {

entry: 'example/main.js',

template: 'public/index.html',

filename: 'index.html'

}

},

                最終生成的結果,包含著html,卻不包含image

結果
對vue-cli3.x的組件升遷最後輸出的結果都不符合預期

繼續維持vue-cli2.x的模板,webpack也是4.x,只是構造為2.x而已,同時通過node-sass遷移為Dart-sass,直接去掉2.x版本的node-sass,繼續維持原有的版本,本次探索vue-cli3.x版本升級結束,斷斷續續歷時4天使用vue-cli2.x組件庫打包之後的結果如圖,滿足第三方組件庫二次封裝,按需加載,體積小,支持自定義組件,可分開引用,簡單明了 

相關焦點

  • Vux v0.1.2 發布,基於 Vue 和 WeUI 的 UI 組件庫
    1.拆分WeUI樣式,不需要引入vux.css該版本最大的變化是拆分了WeUI樣式到各個組件,真正實現按需加載。具體調整如下:不再需要也不推薦引入vux.css, 這是所有組件的樣式集合手動引入reset樣式或者自行實現vue-cli項目不再需要任何其他樣式,組件裡已經包含了樣式 常規項目需要手動引入每個組件的樣式
  • 搭建 Vue CLI 4.x + Webpack5 + Vue 3.x 移動端框架
    啟動項目npm run serve三、目錄結構四、配置 Vantvant 是輕量、可靠的移動端 Vue 組件庫,使用 Vant 3.x 版本的文檔,適用於 Vue 3 開發。1.按需引入對於第三方 UI 組件,如果全部引入,會造成打包體積過大,不推薦,babel-plugin-import 是一款 babel 插件,它會在編譯過程中將 import 語句自動轉換為按需引入的方式。
  • 一張圖教你快速玩轉vue-cli3
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言本文系統的梳理了vue-cli3搭建項目的常見用法,目的在於讓你快速掌握獨立搭建vue項目的能力。
  • Vue2.0父子組件間通信
    vue2.0Vue.js是一套構建用戶界面的漸進式框架。與其他重量級框架不同的是,Vue 從根本上採用最小成本、漸進增量的設計。Vue 的核心庫只專注於視圖層,並且很容易與其他第三方庫或現有項目集成。另一方面,當與單文件組件和 Vue 生態系統支持的庫結合使用時,Vue 也完全能夠為複雜的單頁應用程式提供有力驅動。
  • 如何構建你的第一個 Vue.js 組件
    現在,你不必這樣構建組件。 你可以很容易地用 Vue.component 定義一個全局組件。問題在於,這樣做需要權衡使用字符串模板,沒有 CSS 支持,也沒有構建步驟(所以沒有預處理器)。 然而,我們想要更深入地學習如何構建一個真正的在項目中使用的實際組件。出於這些原因,我們將使用由 Webpack 提供支持的實際設置。
  • 使用CLI開發一個Vue3的npm庫
    前言前幾天寫了一個Vue的自定義右鍵菜單的npm庫,主要講了插件的設計思路以及具體的實現過程,插件的開發流程沒有細講。本文就跟大家分享下如何使用CLI從零開始開發一個支持Vue3的庫,並上傳至npm,歡迎各位感興趣的開發者閱讀本文。
  • 從零開始擼一個Vue3.0組件庫-並上傳到NPM上
    /components/index';createApp(App).use(likeUI).mount('#app');引入好後,在App.vue中進行使用<template> <img alt="Vue logo" src=".
  • 使用Vue CLI腳手架搭建Vue基礎環境
    3.Vue CLI三種模式默認使用的模式development 模式用於 vue-cli-service serveproduction 模式用於 vue-cli-service build 和 vue-cli-service test:e2etest 模式用於 vue-cli-service test:unit設置模式模式不同於
  • Vue3 知名組件庫 NaiveUI 源碼揭秘
    打個比方,皮湯我因為是一名前端,而前端這個領域有很多新興的內容,如 Unbundled 方案 Vite,新興框架 Svelte,新彙編語言 WebAssembly,CSS 工程化方案 TailwindCSS,組件庫如抖音很火的開源庫 Semi Design[2]、或者社區比較火的 Vue3 組件庫 NaiveUI 等。
  • Vue CLI 3.0 正式發布,Vue.js 開發標準化工具
    單文件組件構建為庫或原生 Web 組件此外,你可以在創建新項目時混合使用多種可選集成,包括:無需 Eject 即可配置上面列出的所有功能都可以零配置:當通過 Vue CLI 3 構建項目時,它會安裝 Vue CLI 運行時服務(@ vue / cli-service),選擇功能插件,並生成必要的配置文件。在多數情況下,你只需要專注於編寫代碼。
  • 在vue頁面開發時,如何修改第三方組件的默認樣式
    現在我們在開發vue應用時,有時會經常直接使用一些兼容vue的第三方組件庫。而vue組件我們都知道,在style樣式模塊中,為了實現組件樣式的模塊化,我們一般都會加上scoped,避免各個組件的樣式彼此影響。而因為scoped的作用,我們想在組建中局部修改第三方樣式,又擔心去除scoped造成組件樣式出現相互汙染。
  • 基於Vue實現一個有點意思的拼拼樂小遊戲
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫前言為了加深大家對vue的了解和vue項目實戰,筆者採用vue生態來重構此項目,方便大家學習和探索。
  • 把 Vue-cli 項目遷移至 Vite!
    文章目錄:正文package.jsondevDependencies刪除 @vue/cli-service 依賴項,並替換為 vite 🚀Add vite dev dependency, v2.1.3 at the time of writing.png
  • 10 個實用的 Vue.js 工具和庫
    從版本 1.x 開始,它提供了出色的博客功能和強大的插件系統。它有一個默認主題(適用於技術文檔),但你也可以構建自定義主題或使用社區中的預製主題。在 VuePress 中,你使用 Markdown 編寫內容,然後將其轉換為預渲染的靜態 HTML 文件。
  • 2020年5個最佳Vue移動端組件庫|UI框架
    小夥伴們平時開發vue,react或是angular項目,都喜歡使用的什麼UI組件庫呢?今天,就來盤點下,幾個熱門優質的Vue.js移動端UI組件庫。,能夠滿足日常的移動端開發需要可按需加載組件。);3、Cube UI滴滴團隊開發的基於 Vue.js 實現的精緻移動端組件庫。
  • 如何在 Vue.js 中使用第三方庫
    除非你找到了一個簡單而又健壯的方式來引入這些庫供不同的組件和模塊使用, 不然, 這些第三方庫的管理會給你帶來一些麻煩.本文將介紹一些在 Vue.js 中使用第三方庫的方式.全局變量在項目中添加第三方庫的最簡單方式是講其作為一個全局變量, 掛載到 window 對象上:entry.jswindow._ = require('lodash');MyComponent.vueexport default {  created() {
  • Vue 3.0前的 TypeScript 最佳入門實踐
    1、使用官方腳手架構建npm install -g @vue/cli# ORyarn global add @vue/cli新的 VueCLI工具允許開發者 使用 TypeScript 集成環境 創建新項目。只需運行 vue createmy-app。然後,命令行會要求選擇預設。
  • 手把手教你搭建基於 Vue3 的前端組件庫
    最終決定參考 Element UI 的設計風格,主題色選擇紫色(受到 MaterialDesignInXamlToolkit 的影響),寫一套基於 Vue3 的 UI 框架庫和對應的官方網站,方便後期在項目中快速使用,也算是對 Vue3 新特性的學習和總結。先看一下 Jeremy UI 官網 效果吧!
  • 從頭開始學習Vuex
    以前的解決辦法:a.將數據以及操作數據的行為都定義在父組件;b.將數據以及操作數據的行為傳遞給需要的各個子組件(有可能需要多級傳遞)傳參的方法對於多層嵌套的組件將會非常繁瑣,並且對於兄弟組件間的狀態傳遞無能為力。
  • 2018 年你需要知道的 Vue.js 組件庫,完善你的應用開發
    https://www.oschina.net/p/element-ui用於 Web 的 Vue.js 2.0 UI 工具包,這個使用廣泛流行的 Vue 2.0 網絡工具包提供了豐富的可定製組件的選擇。