rollup打包vue組件并發(fā)布到npm的方法
個人認為rollup在打包組件的實現(xiàn)方式比用webpack方便,webpack應(yīng)該是比較適合打包大型的工程項目,而rollup適合打包一些平時在項目中的組件
rollup中文文檔:簡介 | rollup.js 中文文檔 | rollup.js中文網(wǎng) (rollupjs.com)
這次打包一個滾動加載更多的組件,因為平時用vant是vant-list 會遇到一些問題,例如滾動到底部沒有觸發(fā)加載更多邏輯。
首先在項目根目錄安裝rollup
npm i rollup -D
安裝一些rollup常用到的plugins
基本的工程化插件
- @rollup/plugin-node-resolve 幫助 rollup 識別外部模塊
- @rollup/plugin-babel babel插件 將es6+轉(zhuǎn)為es5
- rollup-plugin-copy 直接復(fù)制靜態(tài)文件
- @rollup/plugin-terser 壓縮代碼
- @rollup/plugin-commonjs 將commonjs模塊轉(zhuǎn)為es模塊
- @rollup/plugin-typescript typescript插件
- @rollup/plugin-alias 路徑別名
npm i @rollup/plugin-babel @rollup/plugin-commonjs @rollup/plugin-node-resolve @rollup/plugin-terser rollup-plugin-vue @rollup/plugin-typescript @babel/core - D
處理Vue文件
rollup-plugin-vue
用于處理.vue文件。vue2和vue3項目所用的rollup-plugin-vue版本不一樣,vue的編譯器也不一樣。
- vue2:rollup-plugin-vue^5.1.9 + vue-template-compiler
- vue3:rollup-plugin-vue^6.0.0 + @vue/compiler-sfc
npm i vue-template-compiler @vue/compiler-sfc -D
vue2和vue3版本的plugins可以這樣在devDependencies中指定,,然后npm install
"devDependencies":{ "rollup-plugin-vue2": "npm:rollup-plugin-vue@^5.1.9", "rollup-plugin-vue3": "npm:rollup-plugin-vue@^6.0.0", }
打包CSS插件
rollup-plugin-postcss 識別css和預(yù)處理文件 (如果css,rollup-plugin-postcss需要配合sass使用)
這里我以分別vue2和vue3各創(chuàng)建一個rollup.config.js
vue2-----rollup.vue2.config.js,配置如下
import resolve from '@rollup/plugin-node-resolve'; import vue2 from 'rollup-plugin-vue2'; import babel from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs'; import terser from '@rollup/plugin-terser'; import json from '@rollup/plugin-json'; import postcss from 'rollup-plugin-postcss' import typescript from "@rollup/plugin-typescript"; export default { input: 'src/index.ts', output: { globals: { vue: "Vue" } }, plugins: [ resolve(), typescript(), terser(), json(), vue2({ css: true, compilerTemplate: true, preprocessStyles: true }), babel({ exclude: "**/node_modules/**" }), commonjs(), postcss() ] }
vue3-----rollup.vue3.config.js,配置如下
import resolve from '@rollup/plugin-node-resolve'; import vue3 from 'rollup-plugin-vue3'; import babel from '@rollup/plugin-babel'; import commonjs from '@rollup/plugin-commonjs'; import terser from '@rollup/plugin-terser'; import json from '@rollup/plugin-json'; import postcss from 'rollup-plugin-postcss' import typescript from '@rollup/plugin-typescript'; export default { input: 'src/index.ts', output: { globals: { vue: "Vue" } }, plugins: [ resolve(), typescript(), terser(), json(), vue3({ css: true, compilerTemplate: true, preprocessStyles: true }), babel({ exclude: "**/node_modules/**" }), commonjs(), postcss() ] }
配置打包命令,這里我把cjs、umd、es、iife都分別打包出來了
"scripts": { "build": "npm run build:vue3 && npm run build:vue2", "build:vue2": "rimraf dist/vue2/* && npm run build:umdvue2 && npm run build:esvue2 && npm run build:unpkgvue2 && npm run build:cjsvue2", "build:umdvue2": "rollup -c rollup.vue2.config.js --format umd --name mList --file dist/vue2/index.umd.js", "build:esvue2": "rollup -c rollup.vue2.config.js --format es --file dist/vue2/index.esm.js", "build:unpkgvue2": "rollup -c rollup.vue2.config.js --format iife --file dist/vue2/index.min.js", "build:cjsvue2": "rollup -c rollup.vue2.config.js --format cjs --file dist/vue2/index.cjs.js", "build:vue3": "rimraf dist/vue3/* && npm run build:umdvue3 && npm run build:esvue3 && npm run build:unpkgvue3 && npm run build:cjsvue3", "build:umdvue3": "rollup -c rollup.vue3.config.js --format umd --name mList --file dist/vue3/index.umd.js", "build:esvue3": "rollup -c rollup.vue3.config.js --format es --file dist/vue3/index.esm.js", "build:unpkgvue3": "rollup -c rollup.vue3.config.js --format iife --file dist/vue3/index.min.js", "build:cjsvue3": "rollup -c rollup.vue3.config.js --format cjs --file dist/vue3/index.cjs.js" },
打包后的文件
然后可以發(fā)布到npm
npm地址:hfex-list - npm (npmjs.com)
github地址:UzumakiHan/hfex-list: 下拉加載更多組件 (github.com)
到此這篇關(guān)于rollup打包vue組件并發(fā)布到npm的文章就介紹到這了,更多相關(guān)rollup打包vue組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue使用html2canvas和jspdf將html轉(zhuǎn)成pdf
在前端開發(fā)中, html轉(zhuǎn)pdf是最常見的需求,下面這篇文章主要給大家介紹了關(guān)于vue如何使用html2canvas和jspdf將html轉(zhuǎn)成pdf的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-03-03vue項目打包解決靜態(tài)資源無法加載和路由加載無效(404)問題
這篇文章主要介紹了vue項目打包,解決靜態(tài)資源無法加載和路由加載無效(404)問題,靜態(tài)資源無法使用,那就說明項目打包后,圖片和其他靜態(tài)資源文件相對路徑不對,本文給大家介紹的非常詳細,需要的朋友跟隨小編一起看看吧2023-10-10