webpack.config.js====图片处理

 

1. 安装依赖:

cnpm install --save-dev url-loader image-webpack-loader html-loader

2. webpack.config.js规则的配置

 /*
            * url-loader:主要是图片处理和Base64编码(base64就是一串加密的字符串,而且base64编码过的图片是没有http请求的)
            * image-webpack-loader:主要是压缩图片
            * */
            {
                test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
                use: [
                    {
                        loader: "url-loader",
                        options: {
                            name: "[name]-[hash:5].min.[ext]",
                            limit: 8192, // size <= 8KB
                                      publicPath: "../images",
                            outputPath: "./images"
                        }
                    },
                    {
                        loader: 'image-webpack-loader',
                        options: {
                            bypassOnDebug: true
                        }
                    }
                ]
            },
            //主要是处理html中的img标签的loader
            {
                test: /\.html$/,
                use: [{
                    loader: 'html-loader',
                    options: {
                        minimize: true
                    }
                }],
            }

3. 相关css文件和html文件

 

4. 合成雪碧图:雪碧图是为了减少网络请求,所以被处理雪碧图的图片多为各式各样的 logo 或者大小相等的小图片。而对于大图片,还是不推荐使用雪碧图。

  4.1 安装依赖

//postcss-loader和postcss-sprites则用来合成雪碧图,减少网络请求
cnpm install --save-dev postcss-loader postcss-sprites

  4.2 配置webpack.config.js文件

//配置雪碧图
let spritesConfig = {
    spritePath: "./dist/images"
};

结合postcss-loader配置postcss-sprites

 // 编译css scss sass文件
            {
                test: /\.(sa|sc|c)ss$/,
                /*
                * 从右向左编译
                * style-loader:将 JS 字符串生成为 style 节点
                * css-loader:将 CSS 转化成 CommonJS 模块
                * sass-loader:// 将 Sass 编译成 CSS
                * use: ['style-loader', 'css-loader', "postcss-loader", 'sass-loader']
                * */
                use: [
                    {
                        loader: "style-loader",
                        options: {
                            singleton: false // 处理为单个style标签
                        }
                    },
                    {
                        loader: "css-loader"
                    },
                    {
                        loader: 'postcss-loader',
                        //postcss-sprites需要结合postcss-loader合成雪碧图
                        options: {
                            ident: "postcss",
                            plugins: [require("postcss-sprites")(spritesConfig)]
                        }
                    },
                    {
                        loader: 'sass-loader'
                    }
                ]

            },
            // 文本分离:配置scss
            {
                test: /\.scss$/,
                use: extractTextWebpackPlugin.extract({
                    fallback: 'style-loader',
                    use: [
                        {loader: 'css-loader'},
                        {
                            loader: 'postcss-loader',
                            //postcss-sprites需要结合postcss-loader合成雪碧区、图
                            options: {
                                ident: "postcss",
                                plugins: [require("postcss-sprites")(spritesConfig)]
                            }
                        },
                        {loader: 'sass-loader'}
                    ]
                })
            },

在编译完成以后,会自动在css文件里面处理background-size和background-position,完美的显示图片

 

posted @ 2019-01-25 11:25  songxia777  阅读(426)  评论(0编辑  收藏  举报