美文网首页
webpack初学者系列五: html + image load

webpack初学者系列五: html + image load

作者: 细密画红 | 来源:发表于2018-06-02 17:55 被阅读20次

问题

image.png

需要解决的几个问题:

  • 这里的index.html文件是在根路径下,理论上放在src文件夹下更合理,标明这个文件也是有可能发生变化的。目前在最后生成的dist文件中,是没有index.html的,如果我们能把index.html放到dist中,dist文件夹就包含了部署所需要的所有文件。
  • 目前我们是手动在index.html中加上 bundle.js 和 main.css 的。合理的做法是我们应该有一个工作流能够自动为 index.html 加上这两个文件。
  • 如果我们在index.html中使用了图片,并在src文件夹中存储了这些图片,这样build之后的代码是不能正常工作的,因为我们并没有把图片文件拷贝到dist文件夹下。

首先,项目代码结构和内容调整如下:

  • 把index.html从根路径移到src文件夹下
  • src里添加img文件夹
  • index.html中引入图片文件,删除了前面手动引入的js和css 文件
image.png

目前的webpack工作流还不能处理这样的改变,我们需要对webpack的配置相应的处理。

  • 添加新的npm 包
npm install --save-dev html-loader html-webpack-plugin  file-loader
  • html-loader: 处理html文件

  • html-webpack-plugin: 根据源html模板重新生成html文件(并不是单纯的copy)

  • file-loader : 用来复制一些文件,比如本项目中的图片文件

  • package.json 文件

var HtmlWebpackPlugin=
...
 module:{
  rules:[
    ...
    {
        test:/\.html$/,
        use:['html-loader']  //extract any html it finds and store it as text.
    },
    {
       test:/\.(jpg|png)$/,
       use:[
         {
             loader:'file-loader',
             option:{
                  name:'[name].[ext]',
                  outputPath:'img/', // 默认情况下,它会输出到webpack配置的output路径下
                  publicPath:'img/' , // outputPath is for copying,publicPath keeping the correct reference in the places where we use this.
             }
         }
       ]
    }
  ]
 },
plugins:[
    ...
    new HtmlWebpackPlugin({
          template:'src/index.html'
          //没有配置信息的话,会默认创建一个新的HTML文件
    })   // 创建完html后,会在自动在页面上添加上我们创建的bundle,比如这个项目中的 bundle.js 和 main.css.
]
...
  • 修改output 中的publicPath
    前面index.html是位于根路径下的,所以对它来说,要访问dist中的bundle.js和main.css, publicPath是 /dist. 但是现在index.html也在dist里面,所以相对路径应该 /, 我们只需要注释掉 publicPath 配置就好了。
  • dist 文件
    默认情况下,我们只能往dist文件的内容会一直存在,如果我们的文件重命名了,旧的文件仍会一直存在。我们希望在每次build流程开始前,先移除dist里面的所有文件。
* npm install --save-dev clean-webpack-plugin
* package.json
var CleanWebpackPlugin=require('clean-webpack-plugin');
plugins:[
...
   new CleanWebpackPlugin(['dist']);
]

相关文章

网友评论

      本文标题:webpack初学者系列五: html + image load

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