2.【webpack】打包编译生成html

在上一篇中讲到了webpack的简单使用,从webpack的初始化,项目创建到项目编译,在本篇为大家讲解webpack如何打包html

目录

---------------------------

1.【webpack】初识及项目创建

2.【webpack】打包编译生成html

首先接着上一篇,我们就看一下项目的目录文件情况:

接着为大家讲解webpack中plugins插件的作用,在webpack中可以支持使用插件来扩展我们的webpack功能,例如在此篇文章中将为大家带来HtmlWebpackPlugin插件的使用,它的作用是使用一个html做为模板,来生成一个新的html文件,具体操作如下:

1.安装html-webpack-plugin插件

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

使用npm安装慢的同学可以使用cnpm,具体的安装方法请咨询我们的百度妹子

2.配置webpack.config.js添加插件

编辑webpack.config.js文件

'use strict'
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
  mode: 'development',
  entry: {
    index: './src/index.js'
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true
    })
  ]
}

此处我们首先引入了html-webpack-plugin插件,并添加plugins配置

其中filename表示我们要生成的html文件名

template表示我们的html模板的位置,还记得上一篇中在根目录下创建的index.html文件吗?没错,就是它啦

接下来再编译试试

npm run dev

 运行结果:

 

哈哈,从日志上我们已经看到生成了index.html文件,再到dist目录中看看

此时,已经生生了index.html文件,接着打开浏览器,运行一下index.html文件看看效果

哈哈,发现已经成功了,有木有?

此时我们观察index.html发现文件中除了模板html中的内容外,还将index.js中的内容也引入进来了

我们再试试给index.js换个名字

修改webpack.config.js文件,编辑entry下的index,改为app

'use strict'
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
  mode: 'development',
  entry: {
    app: './src/index.js'
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: true
    })
  ]
}

再次执行npm run dev

接着,发现script在body标签中,那么就有人问了,怎么放在head标签下?

回到webpack.config.js修改HtmlWebpackPlugin的构造参数,将 inject:true 改为 inject: 'head' 即可

'use strict'
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
  mode: 'development',
  entry: {
    app: './src/index.js'
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: 'head'
    })
  ]
}

再编译发现:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
    <title>demo</title>
    <script type="text/javascript" src="app.js"></script>
  </head>
  <body></body>
</html>

接着,如果我们需要动态的修改title需要怎么做呢?

其实HtmlWebpackPlugin是可以支持自定义参数的,比如:

  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html',
      inject: 'head',
      title: 'webpack-demo'
    })
  ]

增加一个title参数,并修改index.html模板

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body></body>
</html>

再次编译:

哈哈,是不是很好玩呢?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值