博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack4.x实战六,处理图片
阅读量:6819 次
发布时间:2019-06-26

本文共 7753 字,大约阅读时间需要 25 分钟。

如何处理图片

处理图片

安装插件file-loader

执行npm install --save-dev file-loader

修改src/css/style.less

*{	padding:0;	margin:0;}body{	background-color: #f5f5f5;}#app{
width: 200px; height: 200px; background:url(../images/avatar.png); div { width: 100px; height:100px; color:green; border:1px pink solid; transform: translateX(300px); }}复制代码

创建文件夹src/images

mkdir src/images复制代码

拷贝一张图片放到images文件夹中,名称修改为 avatar.png

修改webpack.config.js

const path = require('path');var htmlWebpackPlugin = require('html-webpack-plugin');const extractTextPlugin = require("extract-text-webpack-plugin");const extractCSS = new extractTextPlugin("css/[name]-[hash].css");module.exports = {    mode: 'development',    entry: './src/js/app.js',    output: {        path: path.resolve(__dirname, 'dist'),        filename: 'js/[name]-[hash].js'    },    module: {        rules: [            {                test: /\.css$/,                use: extractCSS.extract({                    fallback: "style-loader", // 编译后用什么loader来提取css文件                    use: [                        { loader: 'css-loader' },                        {                            //浏览器添加前缀                            loader: 'postcss-loader',                            options: {                                ident: 'postcss',                                plugins: [                                    require('autoprefixer')({                                        broswers: ['last 5 versions']                                    })                                ]                            }                        }                    ]                })            },            {                test: /\.less$/,                use: extractCSS.extract({                    fallback: "style-loader", // 编译后用什么loader来提取css文件                    use: [                        { loader: 'css-loader' },                        {                            //浏览器添加前缀                            loader: 'postcss-loader',                            options: {                                ident: 'postcss',                                plugins: [                                    require('autoprefixer')({                                        broswers: ['last 5 versions']                                    })                                ]                            }                        },                        { loader: 'less-loader' }                    ]                })            },            {                test: /\.js$/,  //添加正则,处理js文件                use: [                    //把ES6语法转换为ES5                    { loader: 'babel-loader', options: { "presets": ["@babel/preset-env"] } }                ]            },            {                test:/\.(png|gif|jpg)$/i,                use:[                    {                        loader:'file-loader',                        options:{                            name:'images/[name].[ext]',                            publicPath:'../'                        }                    }                ]            }        ]    },    plugins: [        new htmlWebpackPlugin({            filename: 'index.html',            template: './src/template/index.html',            title: 'this is webpack title'        }),        extractCSS    ]};复制代码

说明:

{    test:/\.(png|gif|jpg)$/i,    use:[        {            loader:'file-loader',            options:{                name:'images/[name].[ext]', //图片名称                publicPath:'../' //相对于当前引入的文件的路径,这里指src/css/style.less文件            }        }    ]}复制代码

执行打包命令 npm run webpack

dist目录结构

dist├── css│   └── main-5f37473804ea25bf9f09.css├── images│   └── avatar.png├── index.html└── js    └── main-5f37473804ea25bf9f09.js复制代码

访问dist/index.html

浏览器效果

思考:如何优化图片打包,使用base64编码

使用url-floader,优化图片打包

插件安装url-floader

npm install url-floader --save-dev复制代码

修改webpack.config.js

const path = require('path');var htmlWebpackPlugin = require('html-webpack-plugin');const extractTextPlugin = require("extract-text-webpack-plugin");const extractCSS = new extractTextPlugin("css/[name]-[hash].css");module.exports = {    mode: 'development',    entry: './src/js/app.js',    output: {        path: path.resolve(__dirname, 'dist'),        filename: 'js/[name]-[hash].js'    },    module: {        rules: [            {                test: /\.css$/,                use: extractCSS.extract({                    fallback: "style-loader", // 编译后用什么loader来提取css文件                    use: [                        { loader: 'css-loader' },                        {                            //浏览器添加前缀                            loader: 'postcss-loader',                            options: {                                ident: 'postcss',                                plugins: [                                    require('autoprefixer')({                                        broswers: ['last 5 versions']                                    })                                ]                            }                        }                    ]                })            },            {                test: /\.less$/,                use: extractCSS.extract({                    fallback: "style-loader", // 编译后用什么loader来提取css文件                    use: [                        { loader: 'css-loader' },                        {                            //浏览器添加前缀                            loader: 'postcss-loader',                            options: {                                ident: 'postcss',                                plugins: [                                    require('autoprefixer')({                                        broswers: ['last 5 versions']                                    })                                ]                            }                        },                        { loader: 'less-loader' }                    ]                })            },            {                test: /\.js$/,  //添加正则,处理js文件                use: [                    //把ES6语法转换为ES5                    { loader: 'babel-loader', options: { "presets": ["@babel/preset-env"] } }                ]            },            {                test:/\.(png|gif|jpg)$/i,                use:[                    {                        loader:'url-loader',                        options:{                            name:'images/[name].[ext]',                            limit:20000,                            publicPath:'../'                        }                    }                ]            }        ]    },    plugins: [        new htmlWebpackPlugin({            filename: 'index.html',            template: './src/template/index.html',            title: 'this is webpack title'        }),        extractCSS    ]};复制代码

说明: limit:20000:图片大于20000byte 使用文件(file-loader),小于20000byte使用base64

执行打包命令 npm run webpack

dist目录结构

dist├── css│   └── main-14de64958860a5cb4e2a.css├── index.html└── js    └── main-14de64958860a5cb4e2a.js复制代码

打开 main-14de64958860a5cb4e2a.css文件,图片已经被处理为base64

访问dist/index.html

浏览器效果

总结

file-loader

插件npm install --save-dev file-loader

添加rules规则

{    test:/\.(png|gif|jpg)$/i,    use:[        {            loader:'file-loader',            options:{                name:'images/[name].[ext]', //图片名称                publicPath:'../' //相对于当前引入的文件的路径            }        }    ]}复制代码

url-loader

插件npm install --save-dev file-loader

添加rules规则

{    test:/\.(png|gif|jpg)$/i,    use:[        {            loader:'url-loader',            options:{                name:'images/[name].[ext]', //图片名称                limit:20000, //图片大于20000byte 使用文件(file-loader),小于20000byte使用base64                publicPath:'../' //相对于当前引入的文件的路径            }        }    ]}复制代码

思考:生产模式下,css文件和js文件越小越好,因此需要压缩;开发模式,css文件和js文件,则不需要压缩;怎么分开打包区分两种模式呢?

请看

转载地址:http://xwmzl.baihongyu.com/

你可能感兴趣的文章
ASP.NET中url传递中文的解决方案
查看>>
js6
查看>>
[PLC]ST语言四:INV_MEP_MEF_PLS_PLF_MC_MCR
查看>>
[Docker]Harbor部署私有镜像仓库
查看>>
漂亮!Javascript代码模仿淘宝宝贝搜索结果的分页显示效果
查看>>
为现代JavaScript开发做好准备
查看>>
mstsc的事 随笔
查看>>
初学seaJs模块化开发,利用grunt打包,减少http请求
查看>>
CentOS 7加强安全性:
查看>>
8086PC读取和执行指令相关部件
查看>>
下拉列表项的配置方式...
查看>>
Tools - 使用Doxygen和Graphviz分析代码
查看>>
Linux - 针对用户账号的常用操作
查看>>
sqlserver 存储过程
查看>>
shell函数使用
查看>>
[POI2012]Salaries
查看>>
差商的性质
查看>>
[摘录]高效人士七习惯—自我管理原则
查看>>
常用的颜色模型
查看>>
[异常笔记]required a bean of type 'org.quartz.JobExecutionContext' that could not be found
查看>>