zoukankan      html  css  js  c++  java
  • webpack4学习笔记

    最近开始学习使用webpack打包工具,由于之前都是使用vue自带的webpack脚手架,使用比较方便,也没有遇到什么问题,后边需要在一些jquery的项目中使用webpack,因此重头学习一下webpack,并记录遇到的问题。

    首先通过webpack官网的快速开始进行学习,简单的demo按照教程,一步步下来并没有什么问题。后来将旧项目迁移,使用webpack,遇到了一些问题,记录如下:

    (*以下设置均在webpack.config.js中完成)

    合并打包压缩css:

    使用“extract-text-webpack-plugin”,注意:该插件在webpack4.0以上会报错,需要 npm install extract-text-webpack-plugin@next   以下载兼容版本

    引用静态文件:

    项目中需要引用一下常规的静态文件,在根目录创建一个static的文件夹,使用“copy-webpack-plugin”,在plugins添加如下配置

    new CopyWebpackPlugin([{
      from: path.resolve(__dirname, 'static'),
      to: path.resolve(__dirname, 'dist/static'),
      ignore: ['.*'],
    }])
    

     即可将该文件夹下的文件复制到dist之下

    自定义入口html文件:

    使用“html-webpack-plugin”,在plugins中配置如下代码中的template的参数

     
    new HtmlWebpackPlugin({
            title: 'mobile',
            template:'./src/mobileContent.html',
            hash:true,
            filename:"mobileContent.html"
    }),
    

      

    引用图片:

    使用url-loader
    (1)设置limit参数,可以使对应体积的图片使用base64编码进行加载; (2)设置outputPath,设置图片输出路径; (3)设置context和name,是由于在原img文件夹中有子文件夹,为使打包后的img文件夹仍然保持原结构,设置name时加上[path],并且通过修改context来设置path的相对路径;     { test:/.(png|jpg|jpeg|gif|svg)$/, use:[ { loader:"url-loader", options:{ limit:1000, //表示低于10000字节(10K)的图片会以 base64编码 outputPath:'img', context:"src/img", //path的相对路径,该设置为保留img下的子文件夹 name:'[path][name].[ext]?[hash]' } } ] }, (4)为打包HTML中img标签所引用的图片,需要使用“html-loader”,并在plugins中增加以下代码 {   test: /.(html)$/,   use: {     loader: 'html-loader',     options: {       attrs: ['img:src','img:data-src','video:poster'],     }   }  }, (5)通过css引用图片和html引用图片后,可能会遇到图片路径问题,总是会有一方的图片引用失败,可以对css-loader进行设置,设置其publicPath属性。 { test: /.css$/, use: ExtractTextPlugin.extract({   fallback: "style-loader",      use: "css-loader",      publicPath:"../" }) }

    引用字体文件:

    使用file-loader插件,在plugins中做如下配置,将字体文件输出在fonts文件夹之下
         {
              test: /.(woff|woff2|eot|ttf|otf)$/,
              use: [{
                loader:'file-loader',
                options:{
                    outputPath:'fonts'
                }
                
              }]
            },

      

    多入口应用:

    首先设置多个入口,针对pc页面和mobile页面的两个入口js进行设置;
    entry: {
            mobile: ['./src/mobile.js',],
            pc: ['./src/pc.js'],
        },
    
    对于html页面入口通过“html-webpack-plugin”实现,只需要在plugins中设置两次即可
    new HtmlWebpackPlugin({
      title: 'mobile',
      template:'./src/mobileContent.html',
      hash:true,
      filename:"mobileContent.html",
    }),
    new HtmlWebpackPlugin({
      title: 'pc',
      template:'./src/pcContent.html',
      hash:true,
      filename:"pcContent.html",
    }),

      

  • 相关阅读:
    把握人生12种财富:让商人更自信
    英语谚语的汉译
    心胸有多大,事业才可能有多大
    想成领袖?先瞄准老板身边的位置
    绝对挑战:如何来提高自己的影响力?
    送给创业的朋友:落入坑洞的猎人
    跨越危机,塑造完美的职业生涯(三)
    如果一个男人真的爱你
    跨越危机,塑造完美的职业生涯(一)
    来自最伟大推销员的成功金句
  • 原文地址:https://www.cnblogs.com/Miracle-ZLZ/p/10518330.html
Copyright © 2011-2022 走看看