最新文章專題視頻專題關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
word刪除不要的空白頁(yè) 電腦ipv6無(wú)網(wǎng)絡(luò)訪問(wèn)權(quán)限怎么辦 ppt單擊鼠標(biāo)點(diǎn)擊不能翻頁(yè) 冰箱有響聲是什么原因 電腦設(shè)置軟件權(quán)限設(shè)置在哪里 冰箱頻繁斷電啟動(dòng)是怎么回事 冰箱很響是什么原因 點(diǎn)擊鼠標(biāo)不能進(jìn)行ppt翻頁(yè) 怎么關(guān)閉win7的開(kāi)機(jī)啟動(dòng)項(xiàng) 打開(kāi)空調(diào)有臭味怎么辦 win7系統(tǒng)怎么調(diào)煙霧頭 ppt點(diǎn)擊鼠標(biāo)不能翻頁(yè)滾動(dòng) 電腦怎么解除授權(quán)管理員權(quán)限 電腦打開(kāi)excel就死機(jī) 在ppt中點(diǎn)擊鼠標(biāo)不能翻頁(yè) 冰箱內(nèi)有異響是怎么回事 怎么樣移動(dòng)電腦桌面圖標(biāo) 怎么退出安全模式電腦 美的冰箱有異響是怎么回事 ppt用鼠標(biāo)點(diǎn)擊不能翻頁(yè) 容聲冰箱響是什么原因 木耳快速泡發(fā)的方法 ppt2016點(diǎn)擊鼠標(biāo)不能翻頁(yè) 臺(tái)式電腦聲音無(wú)法找到輸出設(shè)備 冰箱里面老響是什么原因 怎么把b站緩存的視頻下載到電腦上 白色漆皮鞋發(fā)黃了怎么辦6 ppt點(diǎn)擊鼠標(biāo)左鍵不能翻頁(yè) 冰箱響是什么原因啊 鼠標(biāo)在桌面上右鍵沒(méi)反應(yīng)了 iphone怎么清理系統(tǒng)緩存 ppt放映點(diǎn)擊鼠標(biāo)不翻頁(yè) 冰箱總是響是什么原因 電腦設(shè)置自動(dòng)電腦鎖屏怎么取消 哈啰單車如何取消續(xù)費(fèi) ppt不能點(diǎn)擊鼠標(biāo)切換 怎么清洗水風(fēng)扇 ps怎么除去圖片上的水印 excel公式怎么固定一個(gè)單元格 鮮繭豆怎么吃
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

新手快速上手webpack4打包工具的使用詳解

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:01:37
文檔

新手快速上手webpack4打包工具的使用詳解

新手快速上手webpack4打包工具的使用詳解:一直使用webpack,上次也分享過(guò)webpack配置es6~9的語(yǔ)法參考鏈接,但是對(duì)于一些小白童鞋來(lái)說(shuō),最基本的配置都不太知道,剛好利用春節(jié)休假期間對(duì)webpack4的知識(shí)點(diǎn)梳理一次。方便一些剛剛?cè)胄械娜藢W(xué)習(xí),也是對(duì)自己的一種總結(jié)與提高 一、幾個(gè)盲點(diǎn)的解釋 1、全局安
推薦度:
導(dǎo)讀新手快速上手webpack4打包工具的使用詳解:一直使用webpack,上次也分享過(guò)webpack配置es6~9的語(yǔ)法參考鏈接,但是對(duì)于一些小白童鞋來(lái)說(shuō),最基本的配置都不太知道,剛好利用春節(jié)休假期間對(duì)webpack4的知識(shí)點(diǎn)梳理一次。方便一些剛剛?cè)胄械娜藢W(xué)習(xí),也是對(duì)自己的一種總結(jié)與提高 一、幾個(gè)盲點(diǎn)的解釋 1、全局安

一直使用webpack,上次也分享過(guò)webpack配置es6~9的語(yǔ)法參考鏈接,但是對(duì)于一些小白童鞋來(lái)說(shuō),最基本的配置都不太知道,剛好利用春節(jié)休假期間對(duì)webpack4的知識(shí)點(diǎn)梳理一次。方便一些剛剛?cè)胄械娜藢W(xué)習(xí),也是對(duì)自己的一種總結(jié)與提高

一、幾個(gè)盲點(diǎn)的解釋

1、全局安裝與局部安裝

  • 對(duì)于一般的新手都有一個(gè)疑惑我是全局安裝還是本項(xiàng)目中安裝(局部安裝),個(gè)人建議,現(xiàn)在前端發(fā)展那么快,我們使用局部安裝的方式更好(使用最新的技術(shù)棧)。
  • 我們知道javascript是弱語(yǔ)言,有局部變量和全局變量,其實(shí)全局安裝與局部安裝的性質(zhì)與函數(shù)的全局變量與局部變量有點(diǎn)類似。
  • 2、安裝包的時(shí)候--save與-D的區(qū)別

    一般我們僅僅是在開(kāi)發(fā)環(huán)境依賴的包直接使用-D就可以,這樣就會(huì)在項(xiàng)目的package.json文件中的devDependencies新增相關(guān)的配置信息

    npm install webpack webpack-cli -D

    --save是會(huì)放在package.json文件的dependencies中

    記住僅僅是開(kāi)發(fā)環(huán)境需要使用的包就使用-D

    二、webpack所謂的0配置使用

    webpack是基于配置的前端腳手架,在實(shí)際項(xiàng)目中開(kāi)發(fā)需要配置你需要的插件與加載器。

    1、webpack最基本的基重要的是:

  • plugins:配置插件的
  • module:主要配置一些加載器
  • 2、初始化項(xiàng)目

    創(chuàng)建一個(gè)文件夾webpack-demo

    初始化生成package.json文件

    npm init --yes

    3、安裝webpack最基本的依賴包

    npm install webpack webpack-cli -D

    4、創(chuàng)建一個(gè)文件夾src并在里面創(chuàng)建一個(gè)index.js的文件

    5、在命令行中運(yùn)行(先忽視警告信息)

    npx webpack

    6、在生成的dist文件夾下會(huì)生成一個(gè)大包好的main.js文件,在該文件夾下創(chuàng)建一個(gè)index.html文件引入main.js,在瀏覽器中查看控制臺(tái)是否輸出信息。

    二、webpack的配置

    1、在項(xiàng)目下創(chuàng)建一個(gè)webpack.config.js文件

    2、可以配置的有

    const path = require('path');
    
    module.exports = {
     entry: '', // 打包文件的入口
     output: {}, // 打包后的出口文件配置
     devServer: {}, // 開(kāi)發(fā)服務(wù)器
     module: {}, // 模塊配置
     plugins: {}, // 插件的配置
     mode: 'development', // ['development', 'production']模式
     resolve: {}, // 配置解析
    }
    
    

    三、配置開(kāi)發(fā)環(huán)境(在內(nèi)存中打包)

    1、安裝包

    npm install webpack-dev-server -D

    2、在webpack.config.js中配置入口文件與出口文件

    module.exports = {
     entry: './src/index.js', // 打包文件的入口
     output: {
     filename: 'build.js',
     // 注意這個(gè)位置必須是絕對(duì)路徑
     path: path.join(__dirname, 'dist')
     },
     ...
    }
    
    

    3、配置開(kāi)發(fā)devServer

    module.exports = {
     ...
     devServer: {
     contentBase: path.join(__dirname, 'dist'),
     port: 8000,
     compress: true, // 自動(dòng)壓縮
     open: true, // 自動(dòng)打開(kāi)瀏覽器
     },
    }
    
    

    4、在package.json中配置命令

    ...
    "scripts": {
     "dev": "webpack-dev-server",
    },
    ...
    
    

    5、調(diào)試性的運(yùn)行命令(會(huì)自動(dòng)打開(kāi)瀏覽器,但是里面沒(méi)任何信息展示)

    npm run dev

    6、使用html-webpack-plugin自動(dòng)生成html頁(yè)面的插件

    1.安裝包

    npm install html-webpack-plugin -D

    2.在webpack.config.js中引入

    const HtmlWebpackPlugin = require('html-webpack-plugin');

    3.在plugins中配置

    plugins: [
     new HtmlWebpackPlugin({
     template: './src/index.html',
     title: 'webpack測(cè)試',
     })
    ],
    
    

    4.關(guān)于index.html的內(nèi)容

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
     <meta charset="UTF-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <meta http-equiv="X-UA-Compatible" content="ie=edge">
     <title><%=htmlWebpackPlugin.options.title%></title>
    </head>
    
    <body>
    
    </body>
    
    </html>
    
    

    5.關(guān)于html-webpack-plugin的配置請(qǐng)查看

    6、運(yùn)行npm run dev直接打開(kāi)瀏覽器,打開(kāi)控制臺(tái)可以查看到打印信息

    7、創(chuàng)建打包命令(在package.json中添加命令)

    "scripts": {
     "dev": "webpack-dev-server",
     "build": "webpack"
    },
    
    

    8、使用哈希值的方式創(chuàng)建隨機(jī)生成數(shù)字,解決緩存的問(wèn)題

    1、對(duì)生成的js文件生成隨機(jī)數(shù)

    output: {
     filename: 'build.[hash].js', // 默認(rèn)生成20位的哈希值
     // filename: 'build.[hash:8].js' 可以定制生成多少位的隨機(jī)數(shù)
     // 注意這個(gè)位置必須是絕對(duì)路徑
     path: path.join(__dirname, 'dist')
    },
    
    

    2、對(duì)html里面引入的js生成哈希值(會(huì)生成?哈希值)

    plugins: [
     new HtmlWebpackPlugin({
     template: './src/index.html',
     title: 'webpack測(cè)試',
     hash: true,
     })
    ],
    
    

    3、運(yùn)行命令npm run build可以查看dist文件夾下的文件是否帶了尾巴(注意點(diǎn):要更新文件打包會(huì)生成新的,如果沒(méi)改動(dòng)文件,僅僅是多次打包是一樣的)

    4、運(yùn)行后的效果

    <script type="text/javascript" src="build.1ac0ed4b.js?1ac0ed4bfca95df7576e"></script> 
    
    

    9、關(guān)于html-webpack-plugin其它常用的配置

    new HtmlWebpackPlugin({
     ...
     minify: {
     removeAttributeQuotes: true, // 去除雙引號(hào)
     collapseWhitespace: true, // 合并代碼到一行
     }
    })
    
    

    四、清除之前的plugin的插件的使用

    我們對(duì)每次打包后的緩存文件進(jìn)行刪除確保每次都是最新的

    1、安裝

    npm install clean-webpack-plugin -D

    2、在webpack.config.js中使用

    const CleanWebpackPlugin = require('clean-webpack-plugin');
    plugins: [
     new CleanWebpackPlugin(['./dist']),
     ...
    ],
    
    

    五、關(guān)于webpack入口文件的幾種方式

    1、單一入口文件(參考上面)

    2、多入口文件(可以寫成一個(gè)數(shù)組),共同打包帶一個(gè)出口文件中

    module.exports = {
     mode: 'development',
     entry: [
     './src/index.js',
     './src/a.js'
     ],
     output: {
     filename: 'build.[hash:8].js',
     // 注意這個(gè)位置必須是絕對(duì)路徑
     path: path.join(__dirname, 'dist')
     }
    }

    3、多入口多出口多模板的模式

    1.入口文件與出口文件的配置

    module.exports = {
     mode: 'development',
     entry: {
     index: './src/index.js',
     a: './src/a.js'
     },
     output: {
     filename: '[name].[hash:8].js',
     path: path.join(__dirname, 'dist')
     }
    }
    
    

    2.模板的配置(需要注明輸出文件的名字)

    ...
    plugins: [
     new CleanWebpackPlugin(['./dist']),
     new HtmlWebpackPlugin({
     filename: 'index.html', // 注明打包后的文件名
     template: './src/index.html',
     title: 'webpack測(cè)試1',
     hash: true,
     chunks: ['index'] // 注明選擇哪個(gè)js文件
     }),
     new HtmlWebpackPlugin({
     filename: 'a.html',
     template: './src/index.html',
     title: 'webpack測(cè)試2',
     hash: true,
     chunks: ['a']
     })
     ],
    }
    ...

    六、webpack熱更新的使用

    1、根據(jù)上面的方式我們可以實(shí)現(xiàn),修改js代碼瀏覽器會(huì)刷新,但是是類似我們?nèi)斯さ乃⑿?如果是有狀態(tài)機(jī)的數(shù)據(jù)的時(shí)候會(huì)丟失數(shù)據(jù))

    2、我們可以使用webpack自帶的一個(gè)熱更新的插件

    3、使用方式

    1.在webpack.config.js中配置

    const webpack = require('webpack');
    ...
    plugins: [
     new webpack.HotModuleReplacementPlugin(),
     ...
    ]
    ...

    2.在主要的入口index.js文件中加上

    if (module.hot) {
     module.hot.accept();
    }
    
    

    七、配置加載css樣式的

    webpack默認(rèn)是支持js的,對(duì)于別的css或者typescript必須要安裝加載器

    1、安裝包

    npm install style-loader css-loader less less-loader -D

    2、在webpack.config.js中的module配置規(guī)則(use中是一個(gè)數(shù)組,從后面解析到前面)

    ...
    module: {
     rules: [
     {
     test: /\.css$/,
     use: [
     { loader: 'style-loader' },
     { loader: 'css-loader' }
     ]
     },
     {
     test: /\.less$/,
     use: [
     { loader: 'style-loader' },
     { loader: 'css-loader' },
     { loader: 'less-loader' },
     ]
     }
     ]
     },
    ...
    
    

    3、在src中創(chuàng)建一個(gè)css的文件夾,里面創(chuàng)建a.css和b.less文件

    4、在index.js中引入樣式文件

    import './css/a.css';
    import './css/b.less';

    5、啟動(dòng)服務(wù),查看瀏覽器Elements欄

    八、抽取成單獨(dú)的一個(gè)樣式文件

    上面的方式雖然可以加載樣式文件,但是加載出來(lái)的全部的以<style type="text/css">....</style>的方式到頁(yè)面中,增加了js文件的體積,如果項(xiàng)目大,可能會(huì)造成js文件過(guò)大加載慢,甚至加載不出的弊端。

    1、抽取單獨(dú)的css目前主要有2個(gè)包可以選擇

  • 使用插件extract-text-webpack-plugin@next
  • 使用插件mini-css-extract-plugin(今后取代上面那個(gè)插件的包)
  • 2、安裝包

    npm install extract-text-webpack-plugin@next mini-css-extract-plugin -D
    
    

    3、使用extract-text-webpack-plugin@next插件的方式

    1.引包

    const ExtractTextWebpackPligin = require('extract-text-webpack-plugin');

    2.修改module中的加載器

    module: {
     rules: [
     {
     test: /\.css$/,
     use: ExtractTextWebpackPligin.extract({
     use: [
     { loader: 'css-loader' }
     ]
     })
     },
     {
     test: /\.less$/,
     use: ExtractTextWebpackPligin.extract({
     use: [
     { loader: 'css-loader' }, 
     { loader: 'less-loader' }
     ]
     })
     }
     ]
    },
    ...
    
    

    3.使用插件

    plugins: [
     ...
     new ExtractTextWebpackPligin({
     filename: 'css/index.css',
     }),
     new HtmlWebpackPlugin({
     template: './src/index.html',
     title: 'webpack測(cè)試',
     hash: true,
     // 先注釋下面的代碼,更好看結(jié)果
     // minify: {
     // removeAttributeQuotes: true, // 去除雙引號(hào)
     // collapseWhitespace: true, // 合并代碼到一行
     // }
     })
    ],
    
    

    4、在index.js中依然是導(dǎo)入css文件

    import './css/a.css';
    import './css/b.less';

    4、使用mini-css-extract-plugin插件方式

    1.導(dǎo)包

    const MiniCssTractPlugin = require('mini-css-extract-plugin');
    
    

    2.在module中配置

    module: {
     rules: [
     {
     test: /\.css$/,
     use: [
     MiniCssTractPlugin.loader,
     { loader: 'css-loader' }
     ]
     },
     {
     test: /\.less$/,
     use: [
     MiniCssTractPlugin.loader,
     { loader: 'css-loader' }, 
     { loader: 'less-loader' }
     ]
     }
     ]
    },
    
    

    3.配置插件

    plugins: [
     ...
     new MiniCssTractPlugin({
     filename: 'css/css.css',
     }),
    ]
    
    

    4.一樣的在index.js中導(dǎo)包

    5.測(cè)試

    九、抽取成多個(gè)單獨(dú)的樣式文件

    1、導(dǎo)包

    const ExtractTextWebpackPligin = require('extract-text-webpack-plugin');

    2、預(yù)先實(shí)例化兩個(gè)輸出文件的對(duì)象

    const cssExtract = new ExtractTextWebpackPligin('css/a.css');
    const lessExtract = new ExtractTextWebpackPligin('css/b.css');
    
    

    3、在module中預(yù)先實(shí)例化的對(duì)象

    module: {
     rules: [
     {
     test: /\.css$/,
     use: cssExtract.extract({
     use: [
     { loader: 'css-loader' }
     ]
     })
     },
     {
     test: /\.less$/,
     use: lessExtract.extract({
     use: [
     { loader: 'css-loader' }, 
     { loader: 'less-loader' },
     ]
     })
     }
     ]
    },
    
    

    4、配置插件

    plugins: [
     cssExtract,
     lessExtract,
     ...
    ]
    
    

    5、運(yùn)行命令npm run build查看

    十、關(guān)于抽取樣式修改后不刷新的問(wèn)題(開(kāi)發(fā)的時(shí)候依然是加上style中)

    1.定義disable

    const cssExtract = new ExtractTextWebpackPligin({
     filename: 'css/a.css',
    });
    const lessExtract = new ExtractTextWebpackPligin({
     filename: 'css/b.css',
    });
    
    

    2.在modul中使用

    module: {
     rules: [
     {
     test: /\.css$/,
     use: cssExtract.extract({
     fallback: 'style-loader',
     use: [
     { loader: 'css-loader' }
     ]
     })
     },
     {
     test: /\.less$/,
     use: lessExtract.extract({
     fallback: 'style-loader',
     use: [
     { loader: 'css-loader' }, 
     { loader: 'less-loader' },
     ]
     })
     }
     ]
    },
    
    

    十一、關(guān)于抽取的時(shí)候不引入未使用的樣式來(lái)簡(jiǎn)單打包后的體積

    1、安裝包

    npm install purifycss-webpack purify-css glob -D

    2、導(dǎo)入

    const PurifycssWebpack = require('purifycss-webpack');
    const glob = require('glob');

    3、使用

    ...
    // 注意必須要在HtmlWebpackPlugin后面使用
    new PurifycssWebpack({
     paths: glob.sync(path.resolve('src/*.html'))
    })
    ...
    
    

    十二、給css3樣式加上前綴

    1、使用postcss實(shí)現(xiàn)該功能

    2、安裝包

    npm install postcss-loader autoprefixer -D

    3、配置postcss-loader的加載器

    ...
    {
     test: /\.css$/,
     use: cssExtract.extract({
     fallback: 'style-loader',
     use: [
     { loader: 'css-loader' },
     { loader: 'postcss-loader'},
     ]
     })
    },
    ...
    
    

    4、項(xiàng)目下新創(chuàng)建一個(gè)postcss.config.js的配置文件

    module.exports = {
     plugins: [
     require('autoprefixer')
     ]
    }
    
    

    5、在a.css中寫上css3的樣式

    body {
     background: cyan;
     transform:rotate(30deg);
    }
    
    

    6、執(zhí)行命令npm run build查看生成的文件

    十三、關(guān)于更多插件的使用請(qǐng)自己搜索,只要你能想到的就能搜索到的

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com

    文檔

    新手快速上手webpack4打包工具的使用詳解

    新手快速上手webpack4打包工具的使用詳解:一直使用webpack,上次也分享過(guò)webpack配置es6~9的語(yǔ)法參考鏈接,但是對(duì)于一些小白童鞋來(lái)說(shuō),最基本的配置都不太知道,剛好利用春節(jié)休假期間對(duì)webpack4的知識(shí)點(diǎn)梳理一次。方便一些剛剛?cè)胄械娜藢W(xué)習(xí),也是對(duì)自己的一種總結(jié)與提高 一、幾個(gè)盲點(diǎn)的解釋 1、全局安
    推薦度:
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題xml自動(dòng)化測(cè)試腳本菜鳥(niǎo)教程專題小程序 工具 不會(huì)寫代碼專題如何安裝webpack專題說(shuō)明文檔編寫工具專題webpack下載安裝專題htmlagilitypack教程專題webpack配置教程專題代碼運(yùn)行工具專題技術(shù)文檔編寫工具專題文件反編譯工具專題webpack下載教程專題小程序開(kāi)發(fā)工具用那個(gè)專題小程序封裝工具專題小程序開(kāi)發(fā)使用什么工具專題開(kāi)源文檔編寫工具專題小程序解包工具專題怎樣查看webpack版本專題安裝webpack專題webpack安裝專題webpack安裝使用教程專題
    Top