webpack学习笔记

1.webpack基础概念

首先,创立一个名为index.js 的文件,作为 webpack入口起点文件。

1. 运行指令

开发环境指令: webpack ./src/index.js -o ./build/built.js --mode=development

解释:webpack会以 ./src/index.js为入口文件开始打包,打包后输出到./build/built.js

整体打包环境是项目开发环境

生产环境指令: webpack ./src/index.js -o . /build/built.js - -mode=production

解释:webpack会以./src/index.js 为入口文件开始打包,打包后输出到./build/built.js

整体打包环境,是生产环境

结论:1.webpack能处理js/json资源,不能处理css/img等其他资源

2.生产环境和开发环境将ES6模块化编译成浏览器能识别的模块化~

3.生产环境比开发环境多个压缩js代码。

2.打包样式资源

首先,在项目下创建文件webpack. config.js 作为webpack的配置文件。
作用:当你运行webpack 指令时,会加载里面的配置。

所有构建工具都是基于nodejs运行的模块化默认采用commonjs。

// resolve用来拼接绝对路径的方法
const {resolve}= require('path');
module.exports = {
    //webpack配置
    //入口起点
    entry:'./src/index.js',
    //输出
    output:{
        //输出文件名
        filename:'built.js',
        //输出路径
        //_dirname nodejs的变量,代表当前文件的目求绝对路径
        path: resolve(__dirname ,'build' )
    },
    module:{
        rules:[
            //不同文件必须配置不同loader来处理
            {
                //匹配哪些文件
                test: /\.css$/,
                //使用哪些loader进行处理
                use:[
                    //use数组中loader执行顺序:从右到左,从下到上,依次执行
                    // 创建style标签,将js中的样式资源插入进行,添加到head中生效
                    'style-loader',
                    //将css文件变成commonjs模块加载js中,里面内容是样式字符串
                    'css-loader'
                ]
            },
            {
                test:/\.less$/,
                use:[
                    'style-loader',
                    'css-loader',
                    //需要下载less-loader和less,将less文件编译成css文件
                    'less-loader'
                ]
            }
        ]
    },
    // plugins的配置
    plugins:[],
    //模式   即开发模式还是生产模式
    mode: 'development',
    // mode:'production'
}

3.打包html资源

const {resolve} = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports ={
    entry: ' ./src/index.js' ,
    output:{
        filename: ' built.js',
        path: resolve(__dirnamem, 'build')
    },
    module: {
        rules: [
        // loader的配置
        ],
        plugins: [
        // plugins的配置
        //html-webpack-plugin
        //功能:默认会创建一个空的html文件,引入打包输出的所有资源(js/css)
        // 需要有结构的html文件
        new HtmlWebpackPlugin({
            //复制 './src/index.html'文件 ,并自动打包输出所有资源(js/css)
            template: './src/index.html'
        })
        ],
        mode: 'development'
    }
}

4.打包图片资源

const {resolve} = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry:'./src/index.js',
    output:{
        filename:built.js,
        path:resolve(_dirname,'build')
    },
    module:{
        rules:[
            {
                test: /\.1ess$/,
                //要使用多个loader处理use
                use:['style-loader','css-loader','less-loader']
            },
            {
                //问题:处理不了html中的img图片
                //处理图片资源
                test:/\.(jpg|png|gif)$/,
                //使用一个loader
                //下载url-loader file-loader
                loader:'url-loader',
                options:{
                    //图片大小小于8kb,就会被base64处理
                    //优点:减少请求数量(减轻服务器压力)
                    //缺点:图片体积会更大(文件请求速度更慢一点)
                    limit: 8*1024,
                    // 问题:因为url-loader默认使用es6模块化解析,而html- loader引入图片是commonjs
                    // 解析时会出问题: [object Module]
                    //解决:关闭url-loader的es6模块化, 使用commonjs解析
                    esModule:false,
                    //给图片进行重命名
                    // [hash:10]取图片的hash的前10位
                    // [ext]取文件原来扩展名
                    name : '[hash:10].[ext]'

                }
            },
            {
                test:/\.html$/,
                //处理HTML文件的img图片(负责引入img)
                loader:'html-loader'
            }
        ]
    },
    plugins:[
        new HtmlWebpackPlugin({
            template:'./src/index.html'
        })
    ]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值