国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類(lèi)導(dǎo)航

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

服務(wù)器之家 - 編程語(yǔ)言 - JavaScript - js教程 - 使用webpack和rollup打包組件庫(kù)的方法

使用webpack和rollup打包組件庫(kù)的方法

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

這篇文章主要介紹了使用webpack和rollup打包組件庫(kù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

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

使用webpack和rollup打包組件庫(kù)的方法

webpackrollup對(duì)比

webpack算是使用程序員使用最多的打包工具,面試中往往會(huì)問(wèn)到webpack的相關(guān)問(wèn)題,而rollup被問(wèn)到的要少很多。導(dǎo)致這種現(xiàn)象的一個(gè)原因是,應(yīng)用開(kāi)發(fā)使用webpack,庫(kù)開(kāi)發(fā)使用rollup的說(shuō)法。

但是兩個(gè)打包工具都有很強(qiáng)大的插件開(kāi)發(fā)功能,功能差異越來(lái)越模糊,但是rollup使用起來(lái)更加簡(jiǎn)潔,而且能打出能小體積的文件。但當(dāng)我們做前端應(yīng)用時(shí),性能分析往往要求更小的庫(kù),所以rollup更符合開(kāi)發(fā)庫(kù)的要求。

這次算是一個(gè)打包的實(shí)驗(yàn),我們使用兩個(gè)工具都對(duì)這個(gè)項(xiàng)目打一次包。

使用webpack打包

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

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

webpack打包需要用到很多庫(kù)來(lái)處理不同的文件,這個(gè)項(xiàng)目比較小,就只用了兩個(gè)庫(kù)。

// 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的文件名
  })
 ],
}

本來(lái)應(yīng)該寫(xiě)開(kāi)發(fā)和生產(chǎn)兩個(gè)環(huán)境下的配置,但在這里只寫(xiě)了production環(huán)境下的配置。

使用rollup打包

在rollup中使用的庫(kù)比較多一點(diǎn)。

// rollup.config.js
// 解決rollup無(wú)法識(shí)別commonjs的問(wèn)題
import commonjs from "rollup-plugin-commonjs"
// babel處理es6代碼的轉(zhuǎn)換
import babel from "rollup-plugin-babel"
// resolve將我們編寫(xiě)的源碼與依賴的第三方庫(kù)進(jìn)行合并
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只需要幾個(gè)命令。

npm pack

對(duì)項(xiàng)目打包后,命令行輸出壓縮包的詳細(xì)信息。

使用webpack和rollup打包組件庫(kù)的方法

更新版本

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

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

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

npm publish

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

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

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

延伸 · 閱讀

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

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

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

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

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

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

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

    js用正則表達(dá)式篩選年月日的實(shí)例方法

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

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

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

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

    ALonelyLemon3702022-01-21
  • js教程JS實(shí)現(xiàn)紙牌發(fā)牌動(dòng)畫(huà)

    JS實(shí)現(xiàn)紙牌發(fā)牌動(dòng)畫(huà)

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

    計(jì)算機(jī)的皇帝5342022-01-04
  • js教程JS實(shí)現(xiàn)鼠標(biāo)移動(dòng)拖尾

    JS實(shí)現(xiàn)鼠標(biāo)移動(dòng)拖尾

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

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

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

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

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

    如何在JavaScript中正確處理變量

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

    瘋狂的技術(shù)宅10692021-12-20
主站蜘蛛池模板: 一区中文字幕 | 日本精品一区二区三区在线观看 | 国产综合久久 | 日韩福利 | 国产精品视频一区二区三区不卡 | 探花在线观看 | 亚洲精品久久 | 午夜影院免费观看视频 | 男人午夜天堂 | 手机看片在线 | 在线播放中文字幕 | 久久综合99 | 久久久国产一区二区三区 | 亚洲精品一二区 | 91精品国产色综合久久不卡蜜臀 | 懂色av中文字幕一区二区三区 | av午夜电影 | 日韩色影| 91精品入口蜜桃 | 亚洲精品成人av | 国产精品亚洲第一区在线暖暖韩国 | 日本一区二区免费在线播放 | 精品久久久久久亚洲综合网 | 看免费5xxaaa毛片 | 国产毛片v一区二区三区 | 欧美成在线视频 | 精品国偷自产国产一区 | 成人一区二区三区久久精品嫩草 | 亚洲成av人影片在线观看 | www,四虎| 亚洲精品欧美 | 亚洲国产高清美女在线观看 | 国产精品香蕉 | 国产精品美女 | 91中文字幕在线观看 | 午夜私人影院 | 日日搞夜夜操 | 毛片色| 精品国产乱码久久久久久牛牛 | 日韩中文字幕视频在线观看 | 中文字幕亚洲欧美日韩在线不卡 |