webpack打包工具基础使用

webpack基础使用

一、webpack本质是一个第三方模块包,用于分析,并打包代码。

1、支持所有类型文件的打包
2、支持less/sass =>css
3、支持ES6/7/8 =>ES5
4、压缩代码,提高加载速度

二、使用步骤

1、环境准备①②③
①初始化包环境

yarn init  

②安装依赖包

yarn add webpack webpack-cli -D

③配置scripts(自定义命令)

"scripts": {
    "build":"webpack"
},

2、合并两个js文件
④新建目录src
⑤新建src/add/add.js 定义求和函数导出

export const addFn = (a,b) => a+b

⑥新建src/index.js导入使用

import {addFn} from './add/add'
console.log(addFn(10,20))

⑦运行打包命令

yarn build 

或者 npm run build

三、更新打包

1、新建src/tool/tool.js - 定义导出数组求和方法

export const getArrSum = arr => arr.reduce((sum, val) => sum += val, 0)

2、src/index.js - 导入使用

import {addFn} from './add/add'
import {getArrSum} from './tool/tool'
console.log(addFn(10, 20));
console.log(getArrSum([1, 2, 3]));

3、重新打包

四、定义入口和出口

1、新建src并列处, 👍webpack.config.js👍
2、填入配置项

const path = require("path")
module.exports = {
    entry: "./src/main.js", // 入口
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径
        filename: "bundle.js" // 出口文件名
    }
}

3、修改package.json, 自定义打包命令 - 让webpack使用配置文件

"scripts": {
    "build": "npx webpack"
},

4、打包
总结: 前端工程化模块化, 需要的包yarn下, 被webpack打包后引入到html中使用

五、自动生成HTML文件(只是单纯添加打包后的js文件)

1、在终端中下载插件

yarn add html-webpack-plugin  -D

2、在webpack.config.js中配置

// 引入自动生成 html 的插件
const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    // ...省略其他代码
    plugins: [
        new HtmlWebpackPlugin({
            template: './public/index.html' // 以此为基准生成打包后html文件
        })
    ]
}

3、重新打包后观察dist下是否多出html并运行看效果
总结: webpack就像一个人, webpack.config.js是人物属性, 给它穿什么装备它就干什么活

六、loader加载器 - 处理css文件:可让webpack处理其他类型的文件, 打包到js中

1、在终端中安装依赖

yarn add style-loader css-loader -D

2、在webpack.config.js中配置

const HtmlWebpackPlugin = require('html-webpack-plugin')
module.exports = {
    // ...其他代码
    module: { 
        rules: [ // loader的规则
          {
            test: /\.css$/, // 匹配所有的css文件
            // use数组里从右向左运行
            // 先用 css-loader 让webpack能够识别 css 文件的内容并打包
            // 再用 style-loader 将样式, 把css插入到dom中
            use: [ "style-loader", "css-loader"]
          }
        ]
    }
}

3、新建src/css/li.css
4、引入到main.js (因为这里是入口需要产生关系, 才会被webpack找到打包起来)

import "./css/index.css"

5、运行打包后dist/index.html观察效果和css引入情况
总结: 万物皆模块, 引到入口, 才会被webpack打包, css打包进js中, 然后被嵌入在style标签插入dom上

七、loader加载器 - 处理less文件

1、在终端中安装依赖

yarn add less less-loader -D

2、在webpack.config.js中配置

module: {
  rules: [ // loader的规则
    // ...省略其他
    {
    	test: /\.less$/,
    	// 使用less-loader, 让webpack处理less文件, 内置还会用less翻译less代码成css内容
        use: [ "style-loader", "css-loader", 'less-loader']
    }
  ]
}

3、src/less/index.less
4、引入到main.js中

import "./less/index.less"

5、打包运行dist/index.html 观察效果
总结: 只要找到对应的loader加载器, 就能让webpack处理不同类型文件

八、loader加载器 - 处理图片文件

1、webpack5版本, 直接配置在webpack.config.js - 的 rules里

{
    test: /\.(png|jpg|gif|jpeg)$/i,
    type: 'asset'
}

2、webpack4及以前的, 使用如下配置
①在终端中安装依赖

yarn add url-loader file-loader -D

②在webpack.config.js中配置

{
  test: /\.(png|jpg|gif|jpeg)$/i,
  use: [
    {
      loader: 'url-loader', // 匹配文件, 尝试转base64字符串打包到js中
      // 配置limit, 超过8k, 不转, file-loader复制, 随机名, 输出文件
      options: {
        limit: 8 * 1024,
      },
    },
  ],
}

图片转成 base64 字符串
Ⅰ、好处就是浏览器不用发请求了,直接可以读取
Ⅱ、坏处就是如果图片太大,再转base64就会让图片的体积增大 30% 左右
③src/assets/准备老师发的2个图文件
④在css/less/index.less - 把小图片用做背景图

body{
    background: url(../assets/logo_small.png) no-repeat center;
}

⑤在src/main.js - 把大图插入到创建的img标签上, 添加body上显示

// 引入图片-使用
import imgUrl from './assets/1.gif'
const theImg = document.createElement("img")
theImg.src = imgUrl
document.body.appendChild(theImg)

⑥打包运行dist/index.html观察2个图片区别
总结: url-loader 把文件转base64 打包进js中, 会有30%的增大, file-loader 把文件直接复制输出

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值