首頁  >  文章  >  web前端  >  webpack對html檔案的處理

webpack對html檔案的處理

不言
不言原創
2018-05-28 17:45:362655瀏覽

這篇文章要跟大家分享的是關於webpack對html檔案的處理,步驟都很詳細,有需要的朋友可以參考一下

  • 為什麼要去處理html檔案
    我們所有的方法都打包到了dist的資料夾下面,而我們的html是在自己定義的資料夾下面,如果自己手動再去一個src引入這些dist資料夾下的js,那麼也有些太不可靠了

所以解決方法是:

使用webpack外掛程式:HtmlWebpackPlugin

  • 第一步:下載

npm install --save-dev extract-text-webpack-plugin

第二步:webpack.config.js設定

其中HtmlWebpackPlugin的設定項目有:

##inject{Boolean|String}將js資源注入到頁面哪個部位,值有:true \ 'head' \ 'body' \ false,當傳遞true或'body'所有JavaScript資源將被放置在正文元素的底部。 'head'將腳本放置在head元素中favicon#{String}將給定的圖示路徑新增至輸出HTMLhash{Boolean}如果true將webpack所有包含的腳本和CSS檔案附加一個獨特的編譯雜湊。這對快取清除非常有用chunks{?}放入你需要引入的資源模組excludeChunks{?}#不放入你某些資源模組
#Name 類型 Description
#title {String} 用於產生的HTML文件的標題
filename #{String} 要產生HTML的檔案。可以指定目錄
template {String} #依據的範本檔案

預期目標: 我的專案是一個多入口檔案的項目,希望每個入口頁面都引入對應的js模組和css

例如login頁面引入login的js和css、index引入對應js和css

webpack.config.js設定如下:

const path = require('path');const webpack = require('webpack')const ExtractTextPlugin = require("extract-text-webpack-plugin");const HtmlWebpackPlugin = require('html-webpack-plugin');const configs = {
  entry:{    'commom':['./src/page/common/index.js'],    'index':['./src/page/index/index.js'],    'login':['./src/page/login/index.js']
  },
  output:{
    path:path.resolve(__dirname, 'dist'),
    filename:'js/[name].js'
  },
  module:{
    rules:[
      {
        test:/\.css$/,
        use:ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })
      }
    ]
  },
  plugins:[    //独立通用模块
    new webpack.optimize.CommonsChunkPlugin({
      name : 'common',
      filename : 'js/base.js'
    }),    //独立打包css
    new ExtractTextPlugin('css/[name].css'),    //对html模板进行处理,生成对应的html,引入需要的资源模块
    new HtmlWebpackPlugin({
      template:'./src/view/index.html',//模板文件
      filename:'view/login/index.html',//目标文件
      chunks:['commom','login'],//对应加载的资源
      inject:true,//资源加入到底部
      hash:true//加入版本号
    })
  ]
}
module.exports= configs

然後打包結果如下


webpack對html檔案的處理

其中產生的目標檔案:


webpack對html檔案的處理

  • 為什麼要去處理html檔案

    我們所有的方法都打包到了dist的資料夾下面,而我們的html是在自己定義的資料夾下面,如果自己手動再去一個一個src引入這些dist資料夾下的js,那麼也有些太不可靠了

所以解決方法是:

使用webpack外掛程式:HtmlWebpackPlugin

  • #第一步:下載

  • npm install --save-dev extract-text-webpack-plugin
第二步:

webpack.config.js設定

其中HtmlWebpackPlugin的組態項目有:

Name型別Description ##titlefilename##{String}要產生HTML的檔案。可以指定目錄template{String}#依據的範本檔案{Boolean|String}#{String}{Boolean}{?}{?}
{String} 用於產生的HTML文件的標題
##inject
將js資源注入到頁面哪個部位,值有:true \ 'head' \ 'body' \ false,當傳遞true或'body'所有JavaScript資源將被放置在正文元素的底部。 'head'將腳本放置在head元素中 favicon
將給定的圖示路徑新增至輸出HTML hash
如果true將webpack所有包含的腳本和CSS檔案附加一個獨特的編譯雜湊。這對快取清除非常有用 chunks
放入你需要引入的資源模組 excludeChunks
#不放入你某些資源模組

预期目标: 我的项目是一个多入口文件的项目,希望每一个入口页面引入对应的js模块和css
比如login页面引入login的js和css、index引入对应js和css

webpack.config.js配置如下:

const path = require('path');const webpack = require('webpack')const ExtractTextPlugin = require("extract-text-webpack-plugin");const HtmlWebpackPlugin = require('html-webpack-plugin');const configs = {
  entry:{    'commom':['./src/page/common/index.js'],    'index':['./src/page/index/index.js'],    'login':['./src/page/login/index.js']
  },
  output:{
    path:path.resolve(__dirname, 'dist'),
    filename:'js/[name].js'
  },
  module:{
    rules:[
      {
        test:/\.css$/,
        use:ExtractTextPlugin.extract({
          fallback: "style-loader",
          use: "css-loader"
        })
      }
    ]
  },
  plugins:[    //独立通用模块
    new webpack.optimize.CommonsChunkPlugin({
      name : 'common',
      filename : 'js/base.js'
    }),    //独立打包css
    new ExtractTextPlugin('css/[name].css'),    //对html模板进行处理,生成对应的html,引入需要的资源模块
    new HtmlWebpackPlugin({
      template:'./src/view/index.html',//模板文件
      filename:'view/login/index.html',//目标文件
      chunks:['commom','login'],//对应加载的资源
      inject:true,//资源加入到底部
      hash:true//加入版本号
    })
  ]
}
module.exports= configs

然后打包结果如下
webpack對html檔案的處理

其中生成的目标文件:
webpack對html檔案的處理

相关推荐:

在webpack中使用ECharts详解

Node.js、jade生成静态html文件实例

webpack的插件详解

以上是webpack對html檔案的處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn