webpack小白笔记

这篇博客记录了作者初次配置webpack的过程,从基础的entry和output设置,到深入理解[hash]和[chunkhash],再到使用loader如style-loader、css-loader、file-loader和url-loader处理不同类型的文件。此外,还探讨了如何配置oneOf来处理同一类型文件的不同情况,并介绍了如何在webpack中整合typescript。
摘要由CSDN通过智能技术生成

从来没有自己配置过,但是好想自己啃啃它
所有代码都在github
目录结构
在这里插入图片描述
配置文件都写在config底下了

运行

webpack --config=config/webpack_3.config.js

各工具版本

  • webpack 4.42.0
  • node 10.16.0
  • npm 6.9.0

webpack_1

主要是测试webpack的默认输入输出功能

entry

属性不设置的话,webpack启动时会去寻找./src/index.js。如果没有此文件会报错
【有一点困惑,默认值是./src/index,但是如图我的src/index和webpack_1.config.js并不是同一级,但是打包还是会打包成功生成dist文件夹,dist跟src是一级,我把src移到webpack_1 folder里就失败】

ERROR in Entry module not found: Error: Can't resolve './src' in '/Users/lorry/workspace/up2/webpack'

output

不设置的话就会自动创建dist folder并输出打包结果

webpack_2

测试多入口和多出口的情况
entry可以是string、array、object类型,在不设置output属性时

  • entry属性值是string、array时,打包并生成dist/main.js
  • entry属性值是object时,不管有没有设置output属性都会生成相同数量的打包后的文件
module.exports = {
    entry: {
        test1: './webpack_2/main.js',
        test2: './webpack_2/main1.js',
    },
    output: {
        path: `${absoluteRoute}/dist`,  // 必须是绝对路径
        filename: '[name].js'
    }
}

// 生成
webpack_2/dist/test1.js  webpack_2/dist/test2.js

  • [id]chunk id
  • [name]是entry的key值
  • [hash] 本次构建过程 唯一生成的hash
  • [chunkhash] 基于每个chunk内容生成的hash

[hash]

如下,如果filename: ‘[name][hash].js’
在这里插入图片描述

[chunkhash]

在这里插入图片描述

webpack_3

主要用来测试以下loader以及常用属性、typescript

  • style-loader 通过import/require引用的css文件以style标签的方式打包到html文件里
  • css-loader 可以在js文件中引入css文件
  • file-loader 打包文件并输入到指定folder
  • url-loader 功能类似于file-loader。但是但是在文件大小(单位 byte)低于指定的限制时,可以返回一个 DataURL。大于的话默认使用file-loader处理;它不会将资源打包到output folder

使用url-loader处理后使用
在这里插入图片描述
使用file-loader
在这里插入图片描述
测试了一下url-loader的功能
有两张图a.png【36kb === 36864byte】 b.jpeg【83kb === 84992byte】。
loader配置如下

 {
                test: /\.(png|jpe?g)$/,
                use: [{
                    loader: 'url-loader',
                    options: {
                        name: '[name].[ext]', // 可提供function
                        outputPath: 'assets/',
                        limit: 36864, // byte
                    }
                }]
}

按照文档说的图a应该是使用url-loader处理,b使用file-loader处理
看一下请求,符合预期
在这里插入图片描述

oneOf

可实现对同一类型文件使用不同loader处理,当规则匹配时使用指定loader,不匹配时使用其他规则

css

background: url('./assets/a.png?a') no-repeat center center;
background: url('./assets/b.jpeg') no-repeat center center;

loader配置

{
                test: /\.(png|jpe?g)$/,
                oneOf: [{
                    resourceQuery: /a/,   // 
                    use: 'url-loader',
                },{
                    use: [{
                        loader: 'file-loader',
                        options: {
                            name: '[name].[ext]', // 可提供function
                            outputPath: 'assets/',
                        }
                    }]
                }]
}

根据配置,图a采用url-loader,b使用file-loader
在这里插入图片描述

处理typescript

安装ts-loader typescript

plugins待整理~~~~

/------------接上文--------------/
plugins

webpack_4

typescript的webpack配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值