美文网首页
webpack初学者系列六:Multiple Html File

webpack初学者系列六:Multiple Html File

作者: 细密画红 | 来源:发表于2018-06-02 18:49 被阅读19次

如何处理多个HTML文件?

方案一:HtmlWebpackPlugin
方案二:file-loader

HtmlWebpackPlugin

  • src下新建一份 users.html 文件
  • 最简单的方式,直接拷贝一份
//package.json
...
plugins:[
    ...
    new HtmlWebpackPlugin({
           template:'src/index.html'
    }),
    new HtmlWebpackPlugin({
           template:'src/users.html'
    }),
    ...
]

这个方式的缺点是不够灵活,我们在写配置代码的时候必须明确知道项目里的html文件。如果项目里有数量比较多的html文件,那这个方法就不合适,但如果只有几个html文件,那这个方法是够用的。

当然上面那个简单的拷贝会有问题,如果这样写的话,只会生成一个index.html文件,但是会使用users.html作为模板。(插件默认会生成名为index.html的文件)。我们需要改成下面这样:

//package.json
...
plugins:[
    ...
    new HtmlWebpackPlugin({
           filename:'index.html',
           template:'src/index.html'
    }),
    new HtmlWebpackPlugin({
           filename:'users.html',
           template:'src/users.html'
    }),
    ...
]

build之后会发现如下错误:

image.png

为什么?
因为htmlWebpackPlugin不仅仅只是生成文件,它会把bundle的内容注入到Html文件中。由于users.html没有对应的dom, 于是报错。

解决方式:添加chunks:[]

//package.json
...
plugins:[
    ...
    new HtmlWebpackPlugin({
           filename:'users.html',
           template:'src/users.html',
           chunks:[]
    }),
    ...
]
  • chunk 是什么?
    如果我们希望重新给users.html注入bundle.js,我们可以改一下entry配置。
entry:'./src/js/app.js'
//改成下面
entry:{
    app:'./src/js/app.js'  //这里的app就是我们chunk里的内容
}
// 在users.html里重新注入bundle.js
plugins:[
    ...
    new HtmlWebpackPlugin({
           filename:'users.html',
           template:'src/users.html',
           chunks:['app']
    }),
    ...
]

file-loader

  • 在app.js中添加 users.html
image.png
  • package.json配置文件
image.png

相关文章

网友评论

      本文标题:webpack初学者系列六:Multiple Html File

      本文链接:https://www.haomeiwen.com/subject/qmwrsftx.html