webpack_02 (loader)
加载Css css-loader
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #css-loader的安装 npm install css-loader -D #内联方式 import "css-loader!../css/style.css" ; #配置方式 webpack.config.js module: { rules: [ { test: /\.css$/, // loader: "css-loader", // use: ["css-loader"], use: [ { loader: 'css-loader' } ] } ] } |
style-loader 让css生效
1 2 3 4 5 6 7 8 | #style-loader安装 npm install style-loader -D #因为loader的执行顺序是从右向左(或者说从下到上,或者说从后到前的),所以我们需要将styleloader写到css-loader的前面 { test: /\.css$/, use: [ 'style-loader' , 'css-loader' , 'less-loader' ] } |
处理less
1 2 3 4 5 6 7 8 9 10 11 12 13 | #使用less工具来编译转换成css npm install less -D npx lessc ./src/css/title.less title.css less-loader处理 #安装 npm install less-loader -D #配置 { test: /\.less$/, use: [ 'style-loader' , 'css-loader' , 'less-loader' ] } |
PostCSS
以帮助我们进行一些CSS的转换和适配,比如自动添加浏览器前缀、css样式的重置;
如何使用PostCSS呢?主要就是两个步骤:
第一步:查找PostCSS在构建工具中的扩展,比如webpack中的postcss-loader;
第二步:选择可以添加你需要的PostCSS相关的插件;
参考 https://autoprefixer.github.io/
1 2 | #安装工具postcss-cli npm install postcss postcss-cli -D |
插件autoprefixer
1 2 3 4 | #安装 npm install autoprefixer -D #直接使用使用postcss工具,并且制定使用autoprefixer npx postcss --use autoprefixer -o end.css ./src/css/style.css |
webpack插件 postcss-loader
1 2 3 4 5 6 7 8 | { loader: 'postcss-loader' , options: { postcssOptions: { plugins: [require( 'autoprefixer' )] } } } |
postcss-loader 可以单独引入postcss.config.js,
1 2 3 4 | module.exports = { plugins: [require( 'postcss-preset-env' )] } #plugins: [require('autoprefixer')] |
加载图片
img元素,设置src属性;
其他元素(比如div),设置background-image的css属性;
file-loader
帮助我们处理import/require()方式引入的一个文件资源,并且会将它放到我们输出的文件夹中
1 | options: {outputPath} 设置输出的文件夹 |
[ext]: 处理文件的扩展名
[name]:处理文件的名称;
[hash]:文件的内容,使用MD4的散列函数处理,生成的一个128位的hash值(32个十六进制);
[path]:文件相对于webpack配置文件的路径;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #安装file-loader npm install file-loader -D #配置 { test: /\.(png|jpe?g|gif|svg)$/, use: [ { loader: 'file-loader' , options: { name: 'img/[name]_[hash:8].[ext]' } } ] } |
url-loader
它和file-loader的工作方式是相似的,但是可以将较小的文件,转成base64的URI
小的图片转换base64之后可以和页面一起被请求,减少不必要的请求过程;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #安装url-loader npm install url-loader -D #配置 { test: /\.(png|jpe?g|gif|svg)$/, use: [ { loader: 'url-loader' , options: { name: 'img/[name]_[hash:8].[ext]' , limit: 10 * 1024 } } ] } |
认识asset module type
在webpack5之前,加载这些资源我们需要使用一些loader,比如raw-loader 、url-loader、file-loader;
在webpack5开始,我们可以直接使用资源模块类型(asset module type),来替代上面的这些loader;
资源模块类型(asset module type),通过添加 4 种新的模块类型,来替换所有这些 loader:
asset/resource 发送一个单独的文件并导出 URL。之前通过使用 file-loader 实现;
asset/inline 导出一个资源的 data URI。之前通过使用 url-loader 实现;
asset/source 导出资源的源代码。之前通过使用 raw-loader 实现;
asset 在导出一个 data URI 和发送一个单独的文件之间自动选择。之前通过使用 url-loader,并且配置资源体积限制实现;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #自定义文件的输出路径和文件名呢? #方式一:修改output,添加assetModuleFilename属性; #方式二:在Rule中,添加一个generator属性,并且设置filename; { test: /\.(png|jpe?g|gif|svg)$/, type: 'asset' , generator: { filename: 'img/[name]_[hash:6][ext]' //命名规则 }, parser: { dataUrlCondition: { maxSize: 100 * 1024 //url-loader limit } } }, { test: /\.(eot|ttf|woff2?)$/, type: 'asset/resource' , generator: { filename: 'font/[name]_[hash:6][ext]' } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!