九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
15個具有收藏意義的webpack插件
userphoto

2022.08.12 廣東

關注

分享一下工作中實用的幾個plugin希望對大家有些幫助,不喜勿噴。

html-webpack-plugin

用途: 將一個頁面模板打包到dist目錄下,默認都是自動引入js or css

安裝

cnpm i html-webpack-plugin@3.2.0 -D

配置

index.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>首頁</title></head><body>    <div id="app"></div></body></html>

webpack.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin');module.exports = {    plugins: [        new HtmlWebpackPlugin({            template: './index.html',  // 以咱們本地的index.html文件為基礎模板            filename: "index.html",  // 輸出到dist目錄下的文件名稱        }),    ]}

HtmlWebpackPlugin接收一個對象,里面自行進行配置,詳細參見這里

clean-webpack-plugin

用途: 用于每次打包dist目錄刪除

安裝

cnpm i clean-webpack-plugin -D

配置

webpack.config.js

const { CleanWebpackPlugin } = require('clean-webpack-plugin');module.exports = {    plugins: [        new CleanWebpackPlugin()    ]}

extract-text-webpack-plugin

用途:css樣式從js文件中提取出來最終合成一個css文件,該插件只支持webpack4之前的版本,如果你當前是webpack4及以上版本那么就會報錯。

安裝

cnpm i extract-text-webpack-plugin -D

配置

webpack.config.js

const extractTextPlugin = require('extract-text-webpack-plugin');module.exports = {    module: {        rules: [            {                test: /\.css$/,                use: extractTextPlugin.extract({                    fallback: "style-loader",                     use: "css-loader"                })            }        ]    },    plugins: [        new extractTextPlugin({            filename: "[name].css",            allChunks: true        })    ]} 

上面配置中,extractTextPlugin.extract里面參數(shù)fallback是當提取不成功時,就執(zhí)行style-loaderuse里面是提取時使用css-loader進行轉換,plugins里面的配置filename是最后合并完的.css文件名稱,當allChunksfalse時,只會提取初始化時的css文件,為true時會提取異步的css文件。

mini-css-extract-plugin

用途: 該插件與上面的exract-text-webpack-plugin的一樣,都是將css樣式提取出來, 唯一就是用法不同,本插件的webpack4版本之后推薦使用

安裝

cnpm i mini-css-extract-plugin -D

配置

webpack.config.js

const MiniCssExtractPlugin = require('mini-css-extract-plugin');module.exports = {    module: {        rules: [            {                test: /\.css$/,                use: [                   MiniCssExtractPlugin.loader,                   "css-loader"                ]            }        ]    },    plugins: [        new MiniCssExtractPlugin({            filename: "css/[name].css",            chunkFilename: "css/[name].css"        })    ]} 

上面配置中,可以看到用法與exract-text-webpack-plugin不同,來看一下它們的區(qū)別。

  1. loader配置沒有fallback
  2. plugin中設置filename同步加載資源名稱,還要指定異步加載css資源chunkFilename
  3. 該插件支持配置publicPath用來設置異步加載css的路徑
  4. exract-text-webpack-plugin只會提取一個css文件,mini-css-extract-plugin會根據(jù)異步文件提取出來。

webpack.optimize.CommonsChunkPlugin

用途: 用于將頁面里的公共代碼提取出來,從而進行優(yōu)化加載速度,該CommonsChunkPlugin只支持Webpack4之前。

安裝

該插件是Webpack內置的,不需要安裝。

配置

main.js

import Vue from "vue"

webpack.config.js

module.exports = {    entry: {        main: "./main.js",        vendor: ["Vue"]    },    plugins: [        new Webpack.optimize.CommonsChunkPlugin({            name: "vendor",            filename: "[name].js"        }),        new Webpack.optimize.CommonsChunkPlugin({            name: "common",            chunks: ["vendor"],            filename: "[name].js"        })    ]}

上面配置中,我們把main.js及它里面的依賴文件把Vue.js提取出來進行優(yōu)化,避免每次打包或者每次訪問其它頁面都加載一個該js文件, 我們先是把Vue基礎環(huán)境提取出來,因為基礎環(huán)境它幾乎不會改變,從而進行提取優(yōu)化是必須的。再把Webpack運行時的代碼也提取出來, 這樣vendor就再次打包也不會變化,可以走瀏覽器緩存

optimization.SplitChunks

用途: 該功能與上面的webpack.optimize.CommonsChunkPlugin一樣,只不過optimization.SplitChunkswebpack4之后推薦使用的

安裝

內置的,不需要安裝。

配置

main.js

import Vue from "vue"console.log(Vue)import("./news")

news.js

import Vue from "vue"console.log(Vue)

webpack.config.js

module.exports = {    mode: "development",    entry: {        main: "./main.js"    },    output: {        filename: "[name].js",        path: __dirname + "/dist"    },    optimization: {        splitChunks: {            chunks: "all"        }    },}

上面配置中,splitChunkschunksall是對所有的chunk都生效,默認只對async異步有效。

splitChunks默認情況下也有自動提取,默認要求如下:

  • 被提取的模塊來自node_module目錄
  • 模塊大于30kb
  • 按需加載時請求資源最大值小于等于5
  • 首次加載時并行請求最大值小于等于3

DefinePlugin

用途: 用于注入全局變量,一般用在環(huán)境變量上。

安裝

無需安裝,webpack內置

配置

webpack.config.js

const Webpack = require("webpack")module.exports = {    plugins: [        new Webpack.DefinePlugin({           STR: JSON.stringify("蛙人"),           "process.env": JSON.stringify("dev"),            name: "蛙人"        })    ]}

上面配置中,DefinePlugin接收一個對象,里面的key值對應一個value值,這個value值是一個代碼片段,可以看上面name那個,會報錯 蛙人 is not defined,這里需要注意,value值必須是一個變量或代碼片段。

ProvidePlugin

用途: 用于定義全局變量,如100個頁面都引入vue,每個頁面都引入只會增加工作量,直接在webpackProvide掛載一個變量就行,不用再去一一引入。

安裝

無需安裝,webpack內置

配置

webpack.config.js

const Webpack = require("webpack")module.exports = {    plugins: [        new Webpack.ProvidePlugin({            "Vue": ["vue", "default"]         })    ]}

上面配置中,ProvidePlugin接收一個對象,key值是使用的變量,value值第一個參數(shù)是Vue模塊,第二個參數(shù)默認取Es Module.default的屬性。import默認引入進來是一個 Es Module的對象,里面有default這個屬性就是實體對象

hot-module-replacement-plugin

用途: 開啟熱模塊更新

安裝

無需安裝,webpack內置

配置

webpack.config.js

const Webpack = require("webpack")module.exports = {    plugins: [        new Webpack.HotModuleReplacementPlugin()    ]}

IgnorePlugin

用途: 用于過濾打包文件,減少打包體積大小。

安裝

無需安裝,webpack內置

配置

webpack.config.js

const Webpack = require("webpack")module.exports = {    plugins: [        new Webpack.IgnorePlugin(/.\/lib/, /element-ui/)    ]}

uglifyjs-webpack-plugin

用途: 用于壓縮js文件,針對webpack4版本以上。

安裝

cnpm install uglifyjs-webpack-plugin -D

配置

webpack.config.js

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');module.exports = { optimization: {        minimizer: [            new UglifyJsPlugin({                test: /\.js(\?.*)?$/i,                exclude: /node_modules/            })        ]    }}

copy-webpack-plugin

用途: 用于將文件拷貝到某個目錄下

安裝

cnpm i  copy-webpack-plugin@6.4.1 -D

配置

webpack.config.js

const CopyWebpackPlugin=require('copy-webpack-plugin');module.exports = {    plugins: [        new CopyWebpackPlugin({            patterns: [                {                    from: "./main.js",                    to: __dirname + "/dist/js",                    toType: "dir"                }            ]        })    ]}

上面配置中,將main.js拷貝到dist目錄下的js里,toType默認是file,也可以設置為dir,因為我這dist目錄下沒有js目錄。

optimize-css-assets-webpack-plugin

用途: 用于壓縮css樣式

安裝

cnpm i optimize-css-assets-webpack-plugin -D

配置

webpack.config.js

const OptimizeCssAssetsWebpackPlugin = require("optimize-css-assets-webpack-plugin")module.exports = {    plugins: [        new OptimizeCssAssetsWebpackPlugin(),    ]}

imagemin-webpack-plugin

用途: 用于壓縮圖片

安裝

cnpm i imagemin-webpack-plugin -D

配置

webpack.config.js

const ImageminPlugin =  require('imagemin-webpack-plugin').defaultmodule.exports = {    plugins: [        new ImageminPlugin({             test: /\.(jpe?g|png|gif|svg)$/i         })    ]}

friendly-errors-webpack-plugin

用途: 美化控制臺,良好的提示錯誤,。我們不想自己的終端啟動亂糟糟的,比如這樣

示例

安裝

cnpm i friendly-errors-webpack-plugin -D

配置

webpack.config.js

const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');const devServer =  {    publicPath: "/",    port: 9527,    host: "localhost",    open: true,    hotOnly: true,    stats: 'errors-only'}module.exports = { plugins: [  new FriendlyErrorsWebpackPlugin({   compilationSuccessInfo: {                notes: ['蛙人你好,系統(tǒng)正運行在http://localhost:' + devServer.port]            },            clearConsole: true,  }) ], devServer}

運行完上面代碼??慈缦陆Y果

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Vue項目從2.5M優(yōu)化到200kb的全過程
vue中使用骨架 vue-skeleton-webpack-plugin
vue.config.js配置優(yōu)化
模塊化和webpack
超詳細使用webpack4.x搭建標準前端項目
入門Webpack,看這篇就夠了
更多類似文章 >>
生活服務
熱點新聞
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服