亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

webpack打包進(jìn)度展示以及美化教程

 更新時間:2022年01月24日 15:37:21   作者:jsmask  
webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bundler),下面這篇文章主要給大家介紹了關(guān)于webpack打包進(jìn)度展示以及美化的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

介紹

我們在自己搭建項目的時候,在打包構(gòu)建的時候等待非常的枯燥,尤其是特別大不知道還要等多久才是最恐怖的,這時不妨找一款進(jìn)度條插件,讓我們不再焦躁下去,本期我們會推薦三款進(jìn)度條插件給大家進(jìn)行選擇,找出或者改造喜歡的那一款來用到自己的項目中。

準(zhǔn)備

我們既然要美化進(jìn)度條就要考慮給他更改顏色。目前市面上給終端字符串上色最好用的還是chalk,支持的顏色非常多,而且非常干凈簡潔,我們這里用的是4.1.2版本。

# NPM
npm i -D chalk
# YARN
yarn add -D chalk

我們安裝后,在 webpack.config.js 中引用一下,如下:

// webpack.config.js
const HtmlWebpackPlugin = require("html-webpack-plugin");
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const chalk = require("chalk");
const plugins = [
  new CleanWebpackPlugin(),
  new HtmlWebpackPlugin({
    filename: "index.html",
    template: path.resolve(__dirname, "public/index.html")
  })
]
module.exports = {
  // ...
  plugins
}

這就是目前的基礎(chǔ)結(jié)構(gòu),后面我們就會把介紹的插件推給plugins里面,那么,我們就要切入正題了。

1.webpack.ProgressPlugin

webpack.ProgressPlugin 作為webpack的內(nèi)置插件具備了可以在打包構(gòu)建中輸出當(dāng)前的進(jìn)度和簡述,雖然可能擴(kuò)展和美觀都有限,但是可以不用下載其他第三方插件了。

const { ProgressPlugin } = require("webpack")
let progressPlugin = new ProgressPlugin({
  activeModules: true,         // 默認(rèn)false,顯示活動模塊計數(shù)和一個活動模塊正在進(jìn)行消息。
  entries: true,  			   // 默認(rèn)true,顯示正在進(jìn)行的條目計數(shù)消息。
  modules: false,              // 默認(rèn)true,顯示正在進(jìn)行的模塊計數(shù)消息。
  modulesCount: 5000,          // 默認(rèn)5000,開始時的最小模塊數(shù)。PS:modules啟用屬性時生效。
  profile: false,         	   // 默認(rèn)false,告訴ProgressPlugin為進(jìn)度步驟收集配置文件數(shù)據(jù)。
  dependencies: false,         // 默認(rèn)true,顯示正在進(jìn)行的依賴項計數(shù)消息。
  dependenciesCount: 10000,    // 默認(rèn)10000,開始時的最小依賴項計數(shù)。PS:dependencies啟用屬性時生效。
})
plugins.push(progressPlugin)

主要的參數(shù)都寫明在注釋中就不一一贅述了。

最后,我們的輸出表現(xiàn)為:

注意,webpack.ProgressPlugin 還有一個參數(shù)沒有去寫上,他就是handler,它是可以返回構(gòu)建信息的鉤子函數(shù),下面我們就來簡單寫一下。

new ProgressPlugin({
    // ...
    handler(percentage, message, ...args) {   // 鉤子函數(shù)
            console.log(chalk.yellow("進(jìn)度:") + chalk.green.bold(~~(percentage * 100) + "%") + " " + chalk.yellow.bold("操作:") + chalk.blue.bold(message))
    }
})

返回出的信息如下:

  • percentag:一個介于 0 和 1 之間的數(shù)字,表示編譯的完成百分比。

  • message:當(dāng)前執(zhí)行的鉤子的簡短描述。

  • ...args:零個或多個描述當(dāng)前進(jìn)度的附加字符串。

以上鉤子函數(shù)的代碼輸出結(jié)果為:

2.progress-bar-webpack-plugin

progress-bar-webpack-plugin 這款插件,如果有熟悉node-progress的同學(xué)會感到并不陌生,因為他選項幾乎跟node-progress一模一樣,而且改造擴(kuò)展起來也非常容易,總的來說就是,靈活易用十分小巧方便。

我們要先安裝一下吧:

# NPM
npm i -D progress-bar-webpack-plugin
# YARN
yarn add -D progress-bar-webpack-plugin
const ProgressBarPlugin = require('progress-bar-webpack-plugin');
let progressPlugin = new ProgressBarPlugin({
  width: 50, 					 // 默認(rèn)20,進(jìn)度格子數(shù)量即每個代表進(jìn)度數(shù),如果是20,那么一格就是5。
  format: chalk.blue.bold("build") + chalk.yellow('[:bar] ') + chalk.green.bold(':percent') + ' (:elapsed秒)',
  stream: process.stderr,        // 默認(rèn)stderr,輸出流
  complete: "#",                 // 默認(rèn)“=”,完成字符
  clear: false,                  // 默認(rèn)true,完成時清除欄的選項
  renderThrottle: "",            // 默認(rèn)16,更新之間的最短時間(以毫秒為單位)
  callback() {                   // 進(jìn)度條完成時調(diào)用的可選函數(shù)
    console.log(chalk.red.bold("完成"))
  }
})
plugins.push(progressPlugin)

這里著重要說的是format就是進(jìn)度條的格式:

  • :bar 進(jìn)度條本身

  • :current 當(dāng)前刻度數(shù)

  • :total 總刻度

  • :elapsed 以秒為單位的時間

  • :percent 完成百分比

  • :msg 當(dāng)前進(jìn)度消息

這里我們只要寫出對應(yīng)的字符串就可以將需要展示的信息進(jìn)行構(gòu)建顯示。

最后,我們的輸出表現(xiàn)為:

3.webpackbar

webpackbar 這是一款個人感覺是個十分美觀優(yōu)雅的進(jìn)度條,很多成名框架都用過他。而且使用起來也極其方便,也可以支持多個并發(fā)構(gòu)建是個十分強(qiáng)大的進(jìn)度插件。

我們依然要先安裝一下:

# NPM
npm i -D webpackbar
# YARN
yarn add -D webpackbar
const WebpackBar = require('webpackbar');
let progressPlugin = new WebpackBar({
  color: "#85d",  // 默認(rèn)green,進(jìn)度條顏色支持HEX
  basic: false,   // 默認(rèn)true,啟用一個簡單的日志報告器
  profile:false,  // 默認(rèn)false,啟用探查器。
})
plugins.push(progressPlugin)

最常用的屬性配置其實就是這些,注釋里也寫的很清楚了。

當(dāng)然里面還有一個屬性就是reporters還沒有寫上,可以在里面注冊事件,也可以理解為各種鉤子函數(shù)。如下:

{   // 注冊一個自定義記者數(shù)組
    start(context) {
      // 在(重新)編譯開始時調(diào)用
      const { start, progress, message, details, request, hasErrors } = context
    },
    change(context) {
      // 在 watch 模式下文件更改時調(diào)用
    },
    update(context) {
      // 在每次進(jìn)度更新后調(diào)用
    },
    done(context) {
      // 編譯完成時調(diào)用
    },
    progress(context) {
      // 構(gòu)建進(jìn)度更新時調(diào)用
    },
    allDone(context) {
      // 當(dāng)編譯完成時調(diào)用
    },
    beforeAllDone(context) {
      // 當(dāng)編譯完成前調(diào)用
    },
    afterAllDone(context) {
      // 當(dāng)編譯完成后調(diào)用
    },
}

當(dāng)然多數(shù)情況下,我們并不會使用這些,基本默認(rèn)就足夠了。

最后,剛才的代碼我們的輸出表現(xiàn)為:

結(jié)語

最后個人對他們在使用中做個客觀評價吧:

進(jìn)度插件美觀擴(kuò)展性額外安裝大小
webpack.ProgressPlugin差勁容易/一般無需16.9 KB
progress-bar-webpack-plugin良好容易/優(yōu)秀需要5.72 kB
webpackbar優(yōu)秀復(fù)雜/優(yōu)秀需要134 KB

怎么樣,反正我更青睞于webpackbar ,畢竟現(xiàn)在是個看臉的時代了。當(dāng)然,具體好壞也是需要你自己去體會的,他們各自的官網(wǎng)上都有相應(yīng)存在的問題和一些不同的擴(kuò)展方法等你去發(fā)掘,還等什么?沖鴨~

到此這篇關(guān)于webpack打包進(jìn)度展示以及美化的文章就介紹到這了,更多相關(guān)webpack打包進(jìn)度展示內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript修剪字符串的方法和技巧

    JavaScript修剪字符串的方法和技巧

    你在?JavaScript?代碼編寫中有遇到過一個你需要比較或操作處理字符串,但是在開始或者結(jié)尾有額外空格的情況嗎?在這篇博客中,我將給你展示如何使用不同的方法在?JavaScript?中修剪字符串,需要的朋友可以參考下
    2024-02-02
  • 前端開發(fā)過程中瀏覽器版本的兩種判定方法

    前端開發(fā)過程中瀏覽器版本的兩種判定方法

    前端開發(fā)過程中經(jīng)常需要判斷瀏覽器的版本,達(dá)到同時兼容多個瀏覽器的目的,下面有兩種不錯的常用方法:jquery及HTML中的注釋,喜歡的朋友可以參考下
    2013-10-10
  • 原生js實現(xiàn)日期聯(lián)動

    原生js實現(xiàn)日期聯(lián)動

    日期聯(lián)動算是一個比較常見的功能了,隨便度娘一下,你就能找到N多代碼,今天給大家介紹的是個人比較常用,代碼很簡潔,高效,這里推擠給大家。
    2015-01-01
  • JavaScript定義變量和變量優(yōu)先級問題探討

    JavaScript定義變量和變量優(yōu)先級問題探討

    這篇文章主要介紹了JavaScript定義變量和變量優(yōu)先級的問題探討,變量的定義還有這么講究嗎,不錯,看完本文相信你會有一定的收獲,需要的朋友可以參考下
    2014-10-10
  • 兩個listbox實現(xiàn)選項的添加刪除和搜索

    兩個listbox實現(xiàn)選項的添加刪除和搜索

    listbox竟然可以實現(xiàn)選項的添加刪除和搜索不可思議吧,至于采用什么樣的方法實現(xiàn)的,具體代碼祥看本文嘍,或許可以幫助到你
    2013-03-03
  • 微信小程序?qū)崿F(xiàn)搜索指定景點周邊美食、酒店

    微信小程序?qū)崿F(xiàn)搜索指定景點周邊美食、酒店

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)搜索指定景點周邊美食、酒店的功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 原生js拖拽實現(xiàn)圖形伸縮效果

    原生js拖拽實現(xiàn)圖形伸縮效果

    這篇文章主要為大家詳細(xì)介紹了原生js拖拽實現(xiàn)圖形的伸縮效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • javascript移動的盒子效果代碼

    javascript移動的盒子效果代碼

    不錯的應(yīng)用,用方向鍵控制小方塊的移動
    2008-09-09
  • 模仿Flash AS效果的導(dǎo)航菜單

    模仿Flash AS效果的導(dǎo)航菜單

    模仿Flash AS效果的導(dǎo)航菜單...
    2007-02-02
  • 淺談js中對象的使用

    淺談js中對象的使用

    下面小編就為大家?guī)硪黄獪\談js中對象的使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論