激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術(shù)及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - 使用webpack和rollup打包組件庫的方法

使用webpack和rollup打包組件庫的方法

2022-01-22 20:17不作聲 js教程

這篇文章主要介紹了使用webpack和rollup打包組件庫的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

之前做了一個loading的樣式組件,為了實現(xiàn)代碼的可重用性,將這個小項目打包并且發(fā)布在了npm上。在一次次的打包發(fā)包過程中經(jīng)歷了一個有一個報錯,@buzuosheng/loading這個組件已經(jīng)到了2.7.0版本,雖然還有一些要調(diào)整的地方,但總算是可以用了。

使用webpack和rollup打包組件庫的方法

webpackrollup對比

webpack算是使用程序員使用最多的打包工具,面試中往往會問到webpack的相關(guān)問題,而rollup被問到的要少很多。導致這種現(xiàn)象的一個原因是,應用開發(fā)使用webpack,庫開發(fā)使用rollup的說法。

但是兩個打包工具都有很強大的插件開發(fā)功能,功能差異越來越模糊,但是rollup使用起來更加簡潔,而且能打出能小體積的文件。但當我們做前端應用時,性能分析往往要求更小的庫,所以rollup更符合開發(fā)庫的要求。

這次算是一個打包的實驗,我們使用兩個工具都對這個項目打一次包。

使用webpack打包

在打包之前,需要給package.json文件中添加或更改一些字段。

{
 // 程序主入口模塊,用戶引用的就是該模塊的導出
 "main": "dist/bundle.js",
 // 項目包含的文件
 "files": [
  "src",
  "dist"
 ],
 // 將react和react-dom移動到該配置中,兼容依賴
 "peerDependencies": {
  "react": "^17.0.1",
  "react-dom": "^17.0.1"
 },
}

webpack打包需要用到很多庫來處理不同的文件,這個項目比較小,就只用了兩個庫。

// webpack.config.js
const path = require("path");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {
 mode: "production",
 entry: "./src/Loading.jsx",
 output: {
  filename: "index.js",
  path: path.join(__dirname, "./dist/"),
  libraryTarget: "umd",
 },
 optimization: {
  minimize: false,
 },
 resolve: {
  extensions: [".jsx"]
 },
 module: {
  rules: [
   {
    test: /.css$/,
    loader: [MiniCssExtractPlugin.loader, "css-loader?modules"],
   },
   {
    test: /.(js|jsx)$/,
    loader: "babel-loader",
    exclude: /node_modules/,
   },
  ]
 },
 plugins: [
  new MiniCssExtractPlugin({
   filename: "main.min.css" // 提取后的css的文件名
  })
 ],
}

本來應該寫開發(fā)和生產(chǎn)兩個環(huán)境下的配置,但在這里只寫了production環(huán)境下的配置。

使用rollup打包

在rollup中使用的庫比較多一點。

// rollup.config.js
// 解決rollup無法識別commonjs的問題
import commonjs from "rollup-plugin-commonjs"
// babel處理es6代碼的轉(zhuǎn)換
import babel from "rollup-plugin-babel"
// resolve將我們編寫的源碼與依賴的第三方庫進行合并
import resolve from "rollup-plugin-node-resolve"
// postcss處理css文件
import postcss from "rollup-plugin-postcss"

export default {
 input: "src/Loading.jsx",
 // 打包一份cjs和一份es的文件
 output: [
  {
   file: "dist/loading.es.js",
   format: "es",
   globals: {
    react: "React",
   },
  }, {
   file: "dist/loading.cjs",
   format: "cjs",
   globals: {
    react: "React",
   },
  },
 ],
 external: ["react"],
 plugins: [
  postcss(
   { extensions: [".css"] }
  ),
  babel({
   exclude: "node_modules/**",
   runtimeHelpers: true,
  }),
  commonjs(),
  resolve(),
 ],
}

發(fā)包到npm

發(fā)包到npm只需要幾個命令。

npm pack

對項目打包后,命令行輸出壓縮包的詳細信息。

使用webpack和rollup打包組件庫的方法

更新版本

npm version [<newversion> | major | minor | patch | premajor | preminor | prepatch | prerelease [--preid=<prerelease-id>] | from-git]

根據(jù)本次改動的大小選擇不同的命令。

最后使用發(fā)布命令。

npm publish

然后就會收到郵件,你的包已經(jīng)發(fā)布成功。

到此這篇關(guān)于使用webpack和rollup打包組件庫的方法的文章就介紹到這了,更多相關(guān)webpack和rollup打包組件庫內(nèi)容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務器之家!

原文鏈接:https://segmentfault.com/a/1190000039276597

延伸 · 閱讀

精彩推薦
  • js教程如何在現(xiàn)代JavaScript中編寫異步任務

    如何在現(xiàn)代JavaScript中編寫異步任務

    這篇文章主要給大家介紹了關(guān)于如何在現(xiàn)代JavaScript中編寫異步任務的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考...

    瘋狂的技術(shù)宅11772022-01-12
  • js教程原生js實現(xiàn)放大鏡組件

    原生js實現(xiàn)放大鏡組件

    這篇文章主要為大家詳細介紹了js實現(xiàn)放大鏡組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    蒲公英芽5382022-01-06
  • js教程js用正則表達式篩選年月日的實例方法

    js用正則表達式篩選年月日的實例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于js用正則表達式篩選年月日的實例方法,對此有興趣的朋友們可以學習下。...

    小妮淺淺11912021-12-24
  • js教程JavaScript Dom實現(xiàn)輪播圖原理和實例

    JavaScript Dom實現(xiàn)輪播圖原理和實例

    這篇文章主要為大家詳細介紹了JavaScript Dom實現(xiàn)輪播圖原理和實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    ALonelyLemon3702022-01-21
  • js教程JS實現(xiàn)紙牌發(fā)牌動畫

    JS實現(xiàn)紙牌發(fā)牌動畫

    這篇文章主要為大家詳細介紹了JS實現(xiàn)紙牌發(fā)牌動畫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    計算機的皇帝5342022-01-04
  • js教程JS實現(xiàn)鼠標移動拖尾

    JS實現(xiàn)鼠標移動拖尾

    這篇文章主要為大家詳細介紹了JS實現(xiàn)鼠標移動拖尾效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    day09862021-12-21
  • js教程javascript實現(xiàn)倒計時關(guān)閉廣告

    javascript實現(xiàn)倒計時關(guān)閉廣告

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)倒計時關(guān)閉廣告,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    愛前端的茂茂11542022-01-20
  • js教程如何在JavaScript中正確處理變量

    如何在JavaScript中正確處理變量

    這篇文章主要介紹了如何在JavaScript中正確處理變量,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下...

    瘋狂的技術(shù)宅10692021-12-20
主站蜘蛛池模板: 日韩欧美电影一区二区三区 | 日本精品视频一区二区三区四区 | 爱看久久 | 狠狠色噜噜狠狠狠米奇9999 | 亚洲人成中文字幕在线观看 | 国产一级一区二区 | 福利在线免费视频 | 免费激情网站 | 主人在调教室性调教女仆游戏 | h色网站在线观看 | 国产精品美女久久久久久不卡 | 黑色丝袜美美女被躁视频 | 中文字幕亚洲一区二区三区 | 国产91九色视频 | 国产一区二区三区四区波多野结衣 | 欧美一级免费视频 | 国产精品美女一区二区 | 亚洲男人的天堂在线视频 | 日韩av片在线播放 | 精品无吗乱吗av国产爱色 | 欧美视频一区二区三区在线观看 | av免费在线观看免费 | 久草在线网址 | 亚洲一区二区三区高清视频 | 成人一区三区 | 久久亚洲精选 | 午夜视频成人 | 欧美一级毛片大片免费播放 | 日本黄色免费片 | 日韩.www| 少妇一级淫片免费放播放 | 偿还电影免费看 | 国产91大片 | 国产免费片 | 精品国产一区二区三区四区阿崩 | 色视频91 | 黄网站色成年大片免费高 | 成人免费久久 | 海角在线观看91一区二区 | av手机在线电影 | 欧美精品一级 |