使用plugin

plugin是另一個擴展webpack能力的方式,plugin的功能范圍更廣。plugin的存在可以看成是為了實現(xiàn)那些loader實現(xiàn)不了或不合適在loader中實現(xiàn)的功能。如自動生成項目HTML頁面(HtmlWebpackPlugin)、向構建過程注入環(huán)境變量(EnvironmentPlugin)、向塊(chunk)的結果文件中添加注釋信息(BannerPlugin)等。
  webpack內(nèi)置了一些常用的plugin,如EnvironmentPlugin及BannerPlulgin,更多第三方的plugin可以通過安裝npm包的形式引入,如HtmlWebpackPlugin對應的npm包是html-webpack-plugin。


  • HtmlWebpackPlugin
      在前面的Hello world示例中,我們看到,因為邏輯均實現(xiàn)在JavaScript中,頁面(index.html)的實現(xiàn)中基本沒有邏輯,除了提供一個幾乎為空的HTML結構外,引入了將要被構建生成的結果文件bundle.js。
      一方面,bundle.js是在webpack.config.js中配置的值,取固定值不方便維護;另一方面,為了充分利用瀏覽器緩存,提高頁面加載速度,生產(chǎn)環(huán)境中常常會向靜態(tài)文件的文件名添加MD5戳,即使用bundle_[hash].js而不是bundle.js,這里的[hash]會在構建時被該chunk內(nèi)容的MD5結果替換,以實現(xiàn)內(nèi)容不變則文件名不變。
      在這樣的情況下,在HTML頁面中給定結果文件就變得不太現(xiàn)實。而HtmlWebpackPlugin正是為解決這一問題而生。

HtmlWebpackPlugin會自動生成一個幾乎為空的HTML頁面,并向其中注入構建的結果文件路徑,即使路徑中包含動態(tài)內(nèi)容,如MD5戳,也能夠完美處理。

  • 安裝plugin
    對于內(nèi)置的plugin,可以直接使用:
var webpack = require('webpack');
webpack.BannerPlugin;  //這樣就可以直接獲取BannerPlugin

HtmlWebpackPlulgin并非內(nèi)置plugin,需要先安裝:

npm i html-webpack-plugin@1.7.0 --save-dev

完了后,在webpack.config.js中就可以獲取這個插件了:

var HtmlWebpackPlugin = require('html-webpack-plugin');
  • 配置plugin
var path = require('path');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry: path.join(__dirname, 'index'),
    output: {
        path: __dirname,
        filename: 'bundle.js'
    },
    module: {
        loaders: [
            {
                test: /\.css$/,
                loaders: ['style', 'css']
            }
        ]
    },
    plugins: [  // 配置plugin
        new HtmlWebpackPlugin({
            title: 'use plugin'
        })
    ]
};

我們創(chuàng)造了一個HtmlWebpackPlugin實例,傳入了{title: 'use plugin'},告訴HtmlWebpackPlugin給生成的HTML頁面設置<title>內(nèi)容為use plugin。
原來的index.html可以刪除了。構建完成后,插件會自動生成index.html。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,359評論 7 35
  • GitChat技術雜談 前言 本文較長,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,873評論 7 110
  • 除了 loader 外,plugin 是另一個擴展 webpack 能力的方式。于 loader 專注于處理資源內(nèi)...
    賽亞人之神閱讀 360評論 0 0
  • 學習流程 參考文檔:入門Webpack,看這篇就夠了Webpack for React 一. 簡單使用webpac...
    Jason_Zeng閱讀 3,251評論 2 16
  • 今天終于寫得早點了。 終于不用弄到晚上一點以后了。 不過這幾天的寫得很晚的經(jīng)歷讓我意識到一個問題,事情還是早做早好...
    QimuAI閱讀 975評論 0 1

友情鏈接更多精彩內(nèi)容