淺談webpack構(gòu)建工具配置和常用插件總結(jié)
webpack構(gòu)建工具已經(jīng)火了好幾年,也是當(dāng)下狠火狠方便的構(gòu)建工具,我們沒有理由不去學(xué)習(xí)。既然選擇webpack就要跟著時(shí)代走,我們要追隨大牛的步伐,大牛等等我。
一、webpack基礎(chǔ)
- 在根目錄使用npm init 命令創(chuàng)建package.json,創(chuàng)建過程中一路回車。
- 本地安裝webpack命令:npm install webpack webpack-cli --save-dev 安裝成功后寫入package.js的devDependencies中,可以通過 npm node_modules/.bin/webpack -v 命令查看它的版本。
- 全局安裝npm install -g webpack 不推薦全局安裝 webpack。它會(huì)把你的項(xiàng)目鎖定全局安裝的版本,也可能導(dǎo)致不同的webpack版本中構(gòu)建失敗。
靜態(tài)資源文件目錄
- – src [ 項(xiàng)目源文件目錄 ]
- – dist [ 打包文件目錄 ]
- – webpack.config.js [ webpack配置文件 ]
- – package.json [ NPM包管理配置文件 ]
- – node_modules [ 項(xiàng)目中的依賴存放目錄 ]
二、webpack.config.js
const webpack = require('webpack'); module.exports = { mote:"development",//指當(dāng)前的環(huán)境 /* development:開發(fā)環(huán)境 production:生產(chǎn)環(huán)境 none:不做任何處理 */ //入口文件,如果需求多個(gè)入口可改為對(duì)象 entry: './src/index.js', /* hot配置是否啟用模塊的熱替換功能,devServer的默認(rèn)行為是在發(fā)現(xiàn)代碼被改后通過自動(dòng)刷新整個(gè)頁(yè)面來(lái)做到事實(shí)預(yù)覽,然后設(shè)置hot后, 會(huì)在不刷新整個(gè)頁(yè)面的情況下用新模塊替換老模塊來(lái)做到實(shí)時(shí)更新。 如果選用hot:true方式來(lái)達(dá)到熱更新的效果需要引用webpack.HotModuleReplacementPlugin插件配合達(dá)到你需要的效果,另外推薦一 種簡(jiǎn)便的方式在package.json中scripts設(shè)置如下 "scripts": { "start": "webpack-dev-server --hot --inline", }, */ // 服務(wù)器環(huán)境 devServer: { hot: true, //建議使用第二種方案 啟動(dòng)服務(wù)使用命令 npm run start port:"8080",//端口默認(rèn)8080,可以自行設(shè)置 host:"192.168.xx.xx", /* host配置devServer服務(wù)監(jiān)聽的地址,也可以使用localhost進(jìn)行訪問 瀏覽器輸入192.168.xx.xx/index.html 簡(jiǎn)便方法在package.json中設(shè)置如下 "scripts": { "start": "webpack-dev-server --hot --inline ", }, */ }, //插件 plugins: [ //熱加載插件 new webpack.HotModuleReplacementPlugin(), ], //輸出 output: { //filename:輸出的文件名,可以自定義一些規(guī)則 filename: '[name].bundle.js', //path,配置輸出文件存放在本地的目錄 path: path.resolve(__dirname, 'dist') } };
三、插件
1、HtmlWebpackPlugin
const HtmlWebpackPlugin = require('html-webpack-plugin') plugins: [ new HtmlWebpackPlugin({ // 打包輸出HTML title: 'Hello World',//文件的標(biāo)題 minify: { //minify 的作用是對(duì) html 文件進(jìn)行壓縮 removeComments: true, // 移除HTML中的注釋 collapseWhitespace: true, // 刪除空白符與換行符 minifyCSS: true, // //是否壓縮html里的css 默認(rèn)值false; caseSensitive: true, //是否對(duì)大小寫敏感,默認(rèn)false ollapseWhitespace: true, //是否去除空格,默認(rèn)false minifyJS: true, //是否壓縮html里的js removeAttributeQuotes: true, //是否移除屬性的引號(hào) 默認(rèn)false removeComments: true, //是否移除注釋 默認(rèn)false emoveCommentsFromCDATA: true, //從腳本和樣式刪除的注釋 默認(rèn)false emoveEmptyAttributes: true, //是否刪除空屬性,默認(rèn)false removeRedundantAttributes: true, //刪除多余的屬性 removeScriptTypeAttributes: true, //刪除script的類型屬性,在h5下面script的type默認(rèn)值:text/javascript 默認(rèn)值false }, filename: 'index.html', //輸出的html的文件名稱 template: 'index.html', //html模板在的文件路徑 hash: true,//hash作用是給生成的js文件一個(gè)獨(dú)特的hash值,默認(rèn)值為false 被構(gòu)建過后的html引用js效果如下 // <script type=text/javascript src=bundle.js?22b9692e22e7be37b57e></script> }), ]
2、CleanWebpackPlugin
const { CleanWebpackPlugin } = require('clean-webpack-plugin'); plugins: [ //該插件主要用于自動(dòng)刪除webpack里dist目錄中已不需要的文件 new CleanWebpackPlugin() ]
官方介紹:
By default, this plugin will remove all files inside webpack's output.path directory, as well as all unused webpack assets after every successful rebuild
3、ExtractTextWebpackPlugin
先把我們需要的東西下載好
npm install webpack css-loader style-loader extract-text-webpack-plugin --save-dev
首先配置webpack,先不使用插件完成
module.exports = { module : { rules: [ { test: /\.css$/, use:[ { loader: "style-loader" }, { loader: "css-loader" } ] } ] } }
配置好之后在js入口文件中引入樣式文件,打包查看打包結(jié)果bundle.js,會(huì)發(fā)現(xiàn)css被打包到了js里面,以字符串的形式存在。如果index.html中已引入打包后的bundle.js,使用瀏覽器打開index.html文件會(huì)發(fā)現(xiàn)css以style的形式被插到了head當(dāng)中。
2.使用插件
const path = require('path'); const ExtractTextPlugin = require("extract-text-webpack-plugin"); const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { module : { rules: [ { test: /\.css$/, use : ExtractTextPlugin.extract({ fallback: "style-loader", use: "css-loader" }) } /* use: 指需要什么樣的loader去編譯文件 fallback: 編譯后用什么loader來(lái)提取css文件 */ ] }, plugins: [ new ExtractTextPlugin("styles.css"), new HtmlWebpackPlugin({ // 關(guān)于HtmlWebpackPlugin上文有提到 title: 'extract-text-webpack-plugin', filename: 'index.html', template: path.resolve(__dirname, 'index.html'), inject : 'head' }) ] }
以上內(nèi)容配置好之后打包查看,可以發(fā)現(xiàn)css文件以link的方式被引在index.html的head中。期間配合HtmlWebpackPlugin插件自動(dòng)插入index.html中
到此這篇關(guān)于淺談webpack構(gòu)建工具配置和常用插件總結(jié)的文章就介紹到這了,更多相關(guān)webpack構(gòu)建工具配置和常用插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)圖片輪播的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)圖片輪播的方法,使用純javascript實(shí)現(xiàn)圖片輪播切換的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07js getBoundingClientRect使用方法詳解
這篇文章主要介紹了js getBoundingClientRect使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07微信小程序創(chuàng)建自定義全局函數(shù)以及其調(diào)用方法詳解
微信小程序有時(shí)需要函數(shù)里面調(diào)用函數(shù),下面這篇文章主要給大家介紹了關(guān)于微信小程序創(chuàng)建自定義全局函數(shù)以及其調(diào)用方法的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09js HTML5 Canvas繪制轉(zhuǎn)盤抽獎(jiǎng)
這篇文章主要為大家詳細(xì)介紹了js HTML5 Canvas繪制轉(zhuǎn)盤抽獎(jiǎng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08Javascript刪除指定元素節(jié)點(diǎn)的方法
這篇文章主要介紹了使用Javascript刪除指定元素節(jié)點(diǎn)的方法,通俗易懂,需要的朋友可以參考下。2016-06-06JavaScript實(shí)現(xiàn)簡(jiǎn)單輪播圖效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)圖片輪播,左右翻轉(zhuǎn),圖片切換顯示等效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12前端實(shí)現(xiàn)瀏覽器自定義滾動(dòng)條寫法實(shí)例
自定義滾動(dòng)條最早是IE玩出來(lái)的,但是后來(lái),不知道為什么IE把這個(gè)有意思的功能廢棄了,下面這篇文章主要給大家介紹了關(guān)于前端實(shí)現(xiàn)瀏覽器自定義滾動(dòng)條寫法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06web項(xiàng)目開發(fā)之JS函數(shù)防抖與節(jié)流示例代碼
這篇文章主要介紹了web項(xiàng)目開發(fā)之JS函數(shù)防抖與節(jié)流實(shí)現(xiàn)的示例代碼及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09js實(shí)現(xiàn)iframe跨頁(yè)面調(diào)用函數(shù)的方法
這篇文章主要介紹了js實(shí)現(xiàn)iframe跨頁(yè)面調(diào)用函數(shù)的方法,實(shí)例展示了iframe中父頁(yè)面調(diào)用子頁(yè)面和子頁(yè)面調(diào)用父頁(yè)面的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2014-12-12