打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
webpack教程五:插件

目录


一、插件介绍

    首先,插件Plugins)的目的在于解决loader无法实现的其他事。

    webpack提供了许多的插件以支持打包时进行更多的操作。另外,除了webpack提供的原生插件,许多第三方插件也使我们的打包更加便捷。

    现在我们来看两个实际打包过程中会经常用到的插件:HtmlWebpackPluginCleanWebpackPlugin

二、HtmlWebpackPlugin

    HtmlWebpackPlugin提供哪些功能呢?概括来说就是它简化了HTML文件的创建。

    我们先安装HtmlWebpackPlugin:

    webpack-demo/dist/dist.html文件现在是这样的:

    dist.html

    现在将这个文件删除!!

    同时修改webpack.config.js:

    webpack.config.js:

  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin'); // 导入HtmlWebpackPlugin
  3. module.exports = {
  4. mode: 'development',
  5. entry: {
  6. main: './src/index.js'
  7. },
  8. output: {
  9. filename: 'bundle.js',
  10. path: path.resolve(__dirname, 'dist')
  11. },
  12. module: {
  13. rules: [
  14. {
  15. test: /\.(png|svg|jpg|gif$)/, // 文件后缀名匹配通配符
  16. use: [{
  17. loader: 'url-loader', // 使用的loader
  18. options: {
  19. limit: 10240 // 当图片小于10kb时,使用base64的方式进行打包
  20. }
  21. }]
  22. },
  23. {
  24. test: /\.scss$/,
  25. use: [
  26. 'style-loader',
  27. {
  28. loader: 'css-loader',
  29. options: {
  30. importLoaders: 2
  31. }
  32. },
  33. 'sass-loader',
  34. 'postcss-loader'
  35. ]
  36. },
  37. {
  38. test: /\.(woff|woff2|eot|ttf)$/,
  39. use: [
  40. 'file-loader'
  41. ]
  42. }
  43. ]
  44. },
  45. plugins: [
  46. new HtmlWebpackPlugin()
  47. ]
  48. }

    注意:上面除了加入HtmlWebpackPlugin还将出口文件名设置为了bundle.js。

    现在进行打包操作:

    确实打包出了bundle.js文件,现在再查看dist文件夹:

    可以发现多出来一个index.html文件,打开看看:

    index.html:

    index.html文件中自动引入了打包的文件bundle.js,原来HtmlWebpackPlugin插件就是帮我们构建一个html文件,且能自动引入打包文件!

    可是我们原先的dist.html还有一个div元素,难道要我们自动在index.html中添加吗?

    并不用,HtmlWebpackPlugin可以帮我们来做这件事情。

    首先,在src文件夹中创建一个template.html:

    template.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="webContent"></div>
  11. </body>
  12. </html>

    修改webpack.config.js文件:

    webpack.config.js:

  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin'); // 导入HtmlWebpackPlugin
  3. module.exports = {
  4. mode: 'development',
  5. entry: {
  6. main: './src/index.js'
  7. },
  8. output: {
  9. filename: 'bundle.js',
  10. path: path.resolve(__dirname, 'dist')
  11. },
  12. module: {
  13. rules: [
  14. {
  15. test: /\.(png|svg|jpg|gif$)/, // 文件后缀名匹配通配符
  16. use: [{
  17. loader: 'url-loader', // 使用的loader
  18. options: {
  19. limit: 10240 // 当图片小于10kb时,使用base64的方式进行打包
  20. }
  21. }]
  22. },
  23. {
  24. test: /\.scss$/,
  25. use: [
  26. 'style-loader',
  27. {
  28. loader: 'css-loader',
  29. options: {
  30. importLoaders: 2
  31. }
  32. },
  33. 'sass-loader',
  34. 'postcss-loader'
  35. ]
  36. },
  37. {
  38. test: /\.(woff|woff2|eot|ttf)$/,
  39. use: [
  40. 'file-loader'
  41. ]
  42. }
  43. ]
  44. },
  45. plugins: [
  46. new HtmlWebpackPlugin({
  47. filename: 'dist.html', // 将自动生成的html文件的文件名改为dist.html
  48. template: './src/template.html' // 模板
  49. })
  50. ]
  51. }

    现在进行打包操作:

    打开dist.html:

    可以发现,在HtmlWebpackPlugin自动生成的dist.html文件中果然增加了div元素,它实际上是以src文件夹中的template.html为模板来生成的。

    用浏览器打开dist.html

    效果和之前一样!

三、CleanWebpackPlugin

    经过前面的操作,dist文件夹中有多余的文件:

    我们可以使用CleanWebpackPlugin来自动帮我们清理dist文件夹中多余的文件。

    首先,安装CleanWebpackPlugin:

    然后修改webpack.config.js:

    webpack.config.js:

  1. const path = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin'); // 导入HtmlWebpackPlugin
  3. const CleanWebpackPlugin = require('clean-webpack-plugin'); // 导入CleanWebpackPlugin
  4. module.exports = {
  5. mode: 'development',
  6. entry: {
  7. main: './src/index.js'
  8. },
  9. output: {
  10. filename: 'bundle.js',
  11. path: path.resolve(__dirname, 'dist')
  12. },
  13. module: {
  14. rules: [
  15. {
  16. test: /\.(png|svg|jpg|gif$)/, // 文件后缀名匹配通配符
  17. use: [{
  18. loader: 'url-loader', // 使用的loader
  19. options: {
  20. limit: 10240 // 当图片小于10kb时,使用base64的方式进行打包
  21. }
  22. }]
  23. },
  24. {
  25. test: /\.scss$/,
  26. use: [
  27. 'style-loader',
  28. {
  29. loader: 'css-loader',
  30. options: {
  31. importLoaders: 2
  32. }
  33. },
  34. 'sass-loader',
  35. 'postcss-loader'
  36. ]
  37. },
  38. {
  39. test: /\.(woff|woff2|eot|ttf)$/,
  40. use: [
  41. 'file-loader'
  42. ]
  43. }
  44. ]
  45. },
  46. plugins: [
  47. new HtmlWebpackPlugin({
  48. filename: 'dist.html', // 将自动生成的html文件的文件名改为dist.html
  49. template: './src/template.html' // 模板
  50. }),
  51. new CleanWebpackPlugin()
  52. ]
  53. };

    进行打包操作,然后再查看dist文件夹:

    多余的文件被清理了!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
带你由浅入深了解webpack4中的各种常用配置(一)
webpack.config.js和package.json
webpack2利用插件clean
web前端教程:新手应该怎么学习webpack
webpack 插件: html
模块化和webpack
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服