子由风:webpack打包原理入门探究(一)​zhuanlan.zhihu.com

子由风:webpack打包原理入门探究(二)基本配置​zhuanlan.zhihu.com

子由风:webpack打包原理入门探究(三)入口探究​zhuanlan.zhihu.com

使用 html-webpack-plugin 打包自动生成 index.html

首先,我们需要安装 html-webpack-plugin

npm install html-webpack-plugin --save-dev

配置 webpack.html.plugin.config.js

let path = require('path')
let htmlWebpackPlugin = require('html-webpack-plugin')
function resolve(o) {return path.resolve(__dirname, o)
}
module.exports = {entry: {main: resolve('src/scripts/main.js'),a: resolve('src/scripts/a.js')}, // 指定入口文件output: {path: resolve('dist/js'),// filename: '[name]-[hash].js'filename: "[name]-[chunkhash].js"},plugins: [new htmlWebpackPlugin()]
}

配置 package.json

运行 npm run webpack.html.plugin

效果如下,在 dist 目录生成 index.html,同事也引入了 a.js, main.js

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Webpack App</title></head><body><script type="text/javascript" src="main-8a0feb42c16e4b4ccc97.js"></script><script type="text/javascript" src="a-a1ad07a706a1b2702814.js"></script></body>
</html>

那如果我们打包的是根目录的 index.html,会发生什么情况呢?

我们修改一下 webpack.html.plugin.config.js

let path = require('path')
let htmlWebpackPlugin = require('html-webpack-plugin')
function resolve(o) {return path.resolve(__dirname, o)
}
module.exports = {entry: {main: resolve('src/scripts/main.js'),a: resolve('src/scripts/a.js')}, // 指定入口文件output: {path: resolve('dist/js'),// filename: '[name]-[hash].js'filename: "[name]-[chunkhash].js"},plugins: [new htmlWebpackPlugin({template: 'index.html', // 指定根目录下的 index.html})]
}

再运行 npm run webpack.html.plugin

dist 下的 index.html 发生了改变

<!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>Document</title>
</head>
<body><script src="main.bundle.js"></script>
<script type="text/javascript" src="main-8a0feb42c16e4b4ccc97.js"></script><script type="text/javascript" src="a-a1ad07a706a1b2702814.js"></script></body>
</html>

根目录下的 index.html

<!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>Document</title>
</head>
<body><script src="main.bundle.js"></script>
</body>
</html>

但是我们会发现,所有的东西都生成在 js 文件中了,继续修改一下配置

let path = require('path')
let htmlWebpackPlugin = require('html-webpack-plugin')
function resolve(o) {return path.resolve(__dirname, o)
}
module.exports = {entry: {main: resolve('src/scripts/main.js'),a: resolve('src/scripts/a.js')}, // 指定入口文件output: {path: resolve('dist'),// filename: '[name]-[hash].js'filename: "js/[name]-[chunkhash].js"},plugins: [new htmlWebpackPlugin({template: 'index.html', // 指定根目录下的 index.html})]
}

再运行一下指令

<!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>webpack a </title>
</head>
<body>
<script type="text/javascript" src="js/main-8a0feb42c16e4b4ccc97.js"></script><script type="text/javascript" src="js/a-a1ad07a706a1b2702814.js"></script></body>
</html>

嗯,这一节课就讲到这里吧

webpack打包原理_webpack打包原理入门探究(四)插件探究(上)相关推荐

  1. webpack 合并压缩_webpack 打包压缩js和css的方法示例

    打包压缩js与css 由于webpack本身集成了UglifyJS插件(webpack.optimize.UglifyJsPlugin)来完成对JS与CSS的压缩混淆,无需引用额外的插件, 其命令 w ...

  2. webpack打包优化_Webpack 构建速度优化

    如何输出Webpack构建分析 输出Webpack构建信息的 .json文件: webpack --profile --json > starts.json 说明: --profile:记录构建 ...

  3. webpack打包缓存_webpack独立打包与缓存处理

    关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 先前写了一篇webpack入门的文章<webpack入门必知必会>,简单介绍了webpa ...

  4. 多个python文件打包成exe_pyinstaller打包python文件成exe(原理.安装.问题)

    py文件打包成exe文件的方式一共有三种:py2exe.pyinstaller和cx_freeze 本文分四个步骤来详讲如何用pyinstaller将py文件打包成exe文件 1. pyinstall ...

  5. Android打包APK流程及原理描述

    Android的包文件APK分为两个部分:代码和资源,所以打包方面也分为资源打包和代码打包两个方面,这篇文章就来分析资源和代码的编译打包原理. APK整体的的打包流程如下图所示: 具体说来: 通过AA ...

  6. hmr webpack 不编译_Webpack的HMR原理分析

    Webpack的HMR原理分析 module.exports = { entry : { main : './src/main.js', home : './src/home.js', common ...

  7. hmr webpack 不编译_Webpack HMR 热更新实现原理深入分析

    概述 在使用 Webpack 构建开发期时,Webpack 提供热更新功能为开发带来良好的体验和开发效率,那热更新机制是怎么实现的呢? 代码实现 Webpack 配置添加 HotModuleRepla ...

  8. webpack的loader与plugin原理

    文章目录 loader原理 loader执行顺序 loader使用方式 loader的实现 参数 同步loader 异步loader Raw loader Pitching loader loader ...

  9. webpack实现懒加载原理以及如何使用懒加载优化项目

    参考: 清晰易懂,可以先看这个:webpack的异步加载原理及分包策略 webpack中的懒加载代码原理解析:https://segmentfault.com/a/1190000020233387 自 ...

最新文章

  1. 检查联网状态并设置网络
  2. 计算机网络-UDP协议
  3. 使用Keras进行深度学习:(二)CNN讲解及实践
  4. mfc让图片与按钮一起_MFC 基础知识:对话框背景添加图片和按钮Button添加图片...
  5. Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环
  6. 获取DOM元素方法小结
  7. OSPF——路由聚合【(汇总)含配置命令】||地址汇总计算方法——详解
  8. Redis 安装部署介绍
  9. WingPro 8 for Mac(专业Python IDE开发工具)
  10. BZOJ3376: [Usaco2004 Open]Cube Stacking 方块游戏
  11. VB mschart控件的使用
  12. soopn用一张表更新另一张表_kettle教程之单表读取
  13. 基于STM32的智能小车--避障设计
  14. CSS3实现骗人版无缝轮播图
  15. Ext群 群主大漠穷秋的五年开发技术集合
  16. 老师发的周报写法,之前自己太随意没有规则了QAQ
  17. 腾讯抖音搬运视频如何消重
  18. Echarts 饼图设置标签颜色(单个标签颜色、多个标签颜色)
  19. MinGW-w64安装教程
  20. GIF动图制作网站!

热门文章

  1. gcn在图像上的应用_使用图卷积网络(GCN)做图像分割
  2. 苹果app商品定价_苹果官网闹乌龙,千元产品变百元!多人闻风薅羊毛!
  3. MySQL安装过程中出现的vcruntime140.dll缺失
  4. 转换一个字符串的编码消除乱码
  5. 想要预览文件或是图片,将后端返回的信息转换为前端可以正常显示的格式
  6. 将米转换为度(经纬度) 画圆上下多出来一些区域
  7. 关于单点登录的一些资料(转)
  8. 【数学】稀疏图的随机游走问题
  9. 4g伪基站如何实现的
  10. 温故而知新 forEach 无法中断(break)的问题