VUE-webpack

本文详细介绍了webpack的基础使用,包括初始化环境、安装依赖、配置文件创建、入口出口设置,以及通过案例展示了如何实现隔行变色、自动生成HTML、处理CSS、LESS文件、图片和字体文件的加载。此外,还探讨了使用Babel转换高版本JS语法,并介绍了如何配置webpack-dev-server实现开发服务器及自动刷新功能。通过这个过程,读者可以全面理解webpack的基本工作流程和常见配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webpack基础使用

1.初始化包环境,自动下载package.json配置文件

yarn init

2.安装依赖包,vue包

yarn add webpack webpack-cli -D

3.在package.json里配置

4.根目录创建src目录,在src目录创建入口函数main.js文件

5.根目录创建配置入口出口webpack.config.js

6.填入配置项

const path = require("path")

module.exports = {
    entry: "./src/main.js", // 入口要压缩的文件
    output: { 
        path: path.join(__dirname, "dist"), // 出口路径 压缩成功的文件 压缩好系统自动创建
        filename: "bundle.js" // 出口文件名
    }
}

案例隔行变色

1.基于基础使用

2.下载jquery, 新建public/index.html

yarn add jquery

3.index.html 准备一些li

4.在src/main.js引入jquery,编写代码

// 引入jquery
import $ from 'jquery'
// 隔行变色代码
$(function() {
  $('#app li:nth-child(odd)').css('color', 'red')
  $('#app li:nth-child(even)').css('color', 'green')
})

5.执行打包命令观察效果,把js打包了

yarn build

6.在index.html中==手动==引入js

插件-案例自动生成html文件

1.基于隔行变色案例

2.下载插件

yarn add html-webpack-plugin  -D

3.配置webpack.config.js

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');

module.exports = {
    entry: './src/main.js',
    output: {
        path: path.resolve(__dirname, './dist'),
        filename: 'index_bundle.js',
    },
    plugins: [new HtmlWebpackPlugin({
        template:'./public/index.html'   //要压缩的html路径
    })],
};

4.执行打包命令观察效果

yarn build

注意,打包后index.html自动引入打包后的js文件==

加载器-处理css文件问题

1.基于自动生成html文件

2.安装依赖

yarn add style-loader css-loader -D

3.webpack.config.js 配置

module.exports = {
    // ...其他代码
    plugins: [new HtmlWebpackPlugin({
        template:'./public/index.html'
    })],
    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 - 去掉li默认样式

ul, li{
    list-style: none;
}

4.引入到main.js (因为这里是入口需要产生关系, 才会被webpack找到打包起来)

5.执行打包命令观察效果

yarn build

运行打包后dist/index.html观察效果和css引入情况

加载器-处理less事件

1.基于打包css

2.下载依赖包

yarn add less less-loader -D

3.webpack.config.js 配置

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

4.src/less/index.less - 设置li字体大小24px

@size:24px;

ul, li{
    font-size: @size
}

5.引入到main.js中

import "./less/index.less"

6.执行打包命令观察效果

yarn build

打包运行dist/index.html 观察效果

加载器-处理图片文件

1.直接配置在webpack.config.js - 的 rules里即可

{
    test: /\.(png|jpg|gif|jpeg)$/i,  //加入支持的图片格式
    type: 'asset'
}

2.新建src/assets/,把图片放入里面

3.在css/less/index.less - 把小图片用做背景图

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

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

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

5.打包运行dist/index.html观察2个图片区别

加载器-处理字体文件

1.直接配置在webpack.config.js - 的 rules里即可

{ // webpack5默认内部不认识这些文件, 所以当做静态资源直接输出即可
    test: /\.(eot|svg|ttf|woff|woff2)$/,
    type: 'asset/resource',
    generator: {
    	filename: 'font/[name].[hash:6][ext]' //命名,可以不写
    }
}

2.src/assets/ - 放入字体库fonts文件夹

3.在src/main.js -插入字体标签

// 8. 引入字体图标样式文件
import "./img/fonts/iconfont.css"
let theI = document.createElement("e")
theI.className = "iconfont icon-qq"
document.body.appendChild(theI)

4.执行打包命令-观察打包后网页效果

加载器-处理高版本js语法

1.安装包

yarn add -D babel-loader @babel/core @babel/preset-env

2.配置规则

 {
        test: /\.js$/,
        exclude: /(node_modules|bower_components)/,
        use: {
            loader: 'babel-loader',
            options: {
                presets: ['@babel/preset-env'] // 预设:转码规则(用bable开发环境本来预设的)
            }
        }
    }

3.在main.js中使用箭头函数(高版本js)

// 高级语法
const fn = () => {
  console.log("你好babel");
}
console.log(fn) // 这里必须打印不能调用/不使用, 不然webpack会精简成一句打印不要函数了/不会编译未使用的代码
// 没有babel集成时, 原样直接打包进lib/bundle.js
// 有babel集成时, 会翻译成普通函数打包进lib/bundle.js

4.打包后观察lib/bundle.js - 被转成成普通函数使用了 - 这就是babel降级翻译的功能

开发服务器。自动刷新打包

1.下载包

yarn add webpack-dev-server -D

2.在package.json配置自定义命令,

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

3.运行命令-启动webpack开发服务器

yarn serve

更多配置,开发服务器配置,可以不加

 

module.exports = {
    // ...其他配置
    devServer: {  
    port: 9000, // 端口号
    open:true,  //  //设置自动打开网页
    hot:true  // 打包更快
    }
}

自动打包慢

系统默认是生产环境,可以在webpack.config.js加上mode: 'development'代码,可以改成开发环境,不压缩,打包速度非常快

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

25氪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值