webpack全配置

目录:

1)entry,output写法

      a.单页面

      b.多页面

2)htmlWebpackPlugin的用法(单页面,多页面)

     插件需要下载

3)webpack如何处理静态资源文件

      babel-loader

4)css-loader,style-loader,postcss-loader

      postcss-loader的配置是个坑

5)less-loader

6)项目中的模板文件

7)处理图片文件

     a.file-loader

     b.url-loader:设定limit,当小于这个limit的时候,会变成base64位的存储方式(可以减少http请求,缺点是代码量大),大于这个limit的时候会交给file-loader处理

     c.image-webpack-loader:压缩图片,配合上面两个loader一起使用


范例:

var htmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin')
var path = require('path');
var webpack = require('webpack');
var postcss =require('postcss');
var less = require('less');

module.exports = {
    entry:'./src/app.js',
    output:{
        path:__dirname+"/dist",
        filename:'js/[name].bundle.js'
    },
    module:{
        rules:[//rules -> 匹配规则
            {
                test:/\.js$/,
                exclude:'/node_modules/',
                include:'/src/',
                use:[
                    {
                        loader:'babel-loader',
                         query:{//指定参数
                            presets:['es2015']
                        }
                    }
                ]
                //include:path.resolve(__dirname,'src'),
                //exclude:path.resolve(__dirname,'node_modules'),
            },
            {
                test:/\.css$/,
                use:[
                    'style-loader',//css-loader用于解析,而style-loader则将解析后的样式以style的形式嵌入代码
                    {loader:'css-loader',options:{importLoaders:1}},
                    //importLoaders表示,如果在css中用了@imprt引入其他的css,如果还想用postcss-loader的私有前缀功能,就要用importLoaders属性,它的值为@import引入的次数,用了@import一次,其值就为1
                    {
                        loader:'postcss-loader',
                        options:{
                            plugins:function(){
                                return [
                                    require('postcss-import')(),//解决@import进来,一定要写在require("autoprefixer")前面,否则require("autoprefixer")无效
                                    require("autoprefixer")({browsers:['last 5 versions']})
                                ]
                            }
                        }
                    },
                ]
            },
            {
                test:/\.less$/,
                use:[
                    'style-loader',//css-loader用于解析,而style-loader则将解析后的样式以style的形式嵌入代码
                    'css-loader',//css,less混用的时候,css加上importLoadersless可以不用加
                    {
                        loader:'postcss-loader',
                        options:{
                            plugins:function(){
                                return [
                                    require('postcss-import')(),//解决@import进来,一定要写在require("autoprefixer")前面,否则require("autoprefixer")无效
                                    require("autoprefixer")({browsers:['last 5 versions']})
                                ]
                            }
                        }
                    },
                    'less-loader'
                ]
            },
            {
                test:/\.html$/,
                use:[
                    'html-loader'
                ]
            },
            {
                test:/\.(png|jpg|gif|svg)/i,
                use:[
                    {
                        loader:'url-loader',
                        query: {
                            limit:200000,
                            name:'assets/[name]-[hash:5].[ext]'
                        }
                    },
                    'image-webpack-loader'
                ]



            }
        ]
    },
    plugins:[
        new htmlWebpackPlugin({
            filname:'index.html',
            template:'index.html',
            inject:'body',
        })
    ]
}

//ERROR in ./~/css-loader?{"importLoaders":1}!./~/postcss-loader/



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值