当前位置: 首页 > news >正文

【webpack开发环境下的配置】

webpack的五大核心

  • entry入口
  • output输出
  • loader: 处理非js文件(相当于翻译webpack本身只能理解js)
  • Plugins: 用于其他功能(压缩,优化等)
  • mode: 模式 主要有开发模式和生产环境

实践

  1. 下载包

npm i webpack webpack-cli -D

  1. 全局安装,否则找不到webpack命令

sudo npm i webpack webpack-cli -g

webpack.config.js文件框架

// webpack.config.js文件
/*** 作用:当运行webpack指令时,会加载里面的配置* 所有的构建工具都是基于nodejs平台运行的,模块化默认采用commonjs*/
// 用来拼接绝对路径
const { resolve } = require('path')
module.exports = {entry: './src/index.js',output: {filename: 'build.js',// __dirname:代表当前文件目录的绝对路径path: resolve(__dirname,'build')},// loader配置module: {// 详细的loader配置rules: []},plugins: [// 详细的插件配置],// 模式mode: 'development'
}

html文件处理

  1. 下载包

npm i html-webpack-plugin -D

  1. 配置
const HtmlWebpackPlugin = require('html-webpack-plugin');plugins: [// 详细的插件配置// 不加参数,默认创建一个空的html,自动引入打包输出的所有资源new HtmlWebpackPlugin({template: './src/index.html', // 以该./src/index.html文件为模版创建一个html,并自动引入打包输出的所有资源})  ],

样式处理

css文件

  1. 下载包

npm i css-loader style-loader -D

  1. 写webpack配置
//webpack5
module: {// 详细的loader配置rules: [{test: /\.css$/,  //匹配那些文件,这里注意下webpack的版本,4版本需要加’‘,'/\.css$/'use:[ //使用那些loader处理//  use数组中loader执行顺序:从下往上执行'style-loader', // 创建style标签,将js中的样式资源插入,添加到head中生效'css-loader', // 将css文件变成commonjs模块加入js中,里面的内容是样式字符串]}]
},

less文件

  1. 下载包

npm i css-loader style-loader less less-loader -D

  1. 写webpack配置
//webpack5
module: {// 详细的loader配置rules: [{test: /\.css$/,  //匹配那些文件,这里注意下webpack的版本,4版本需要加’‘,'/\.css$/'use:[ //使用那些loader处理//  use数组中loader执行顺序:从下往上执行'style-loader', // 创建style标签,将js中的样式资源插入,添加到head中生效'css-loader', // 将css文件变成commonjs模块加入js中,里面的内容是样式字符串]},{test: /\.less$/,//匹配那些文件,这里注意下webpack的版本,4版本需要加’‘,'/\.css$/'use: ['style-loader',// 创建style标签,将js中的样式资源插入,添加到head中生效'css-loader', // 将css文件变成commonjs模块加入js中,里面的内容是样式字符串'less-loader', // 将less文件编译成css文件]}]
},

图片处理

  1. 下载包

npm i url-loader file-loader -D // webpack5不需要

  1. webpack中的配置
{ test: /\.(jpg|png|gif|jpeg)$/, //处理图片//  webpack5写法type: 'asset',parser: {dataUrlCondition: {maxSize: 8 * 1024 // 图片小于8kb,就会被base64处理,base64图片优点:减少请求数量(减轻服务器压力) 缺点:图片体积更大(文件请求速度慢),这个根据实际情况设置,一般是处理(12kb以下)}},generator: {filename: 'static/[hash:10][ext][query]', // 重命名图片的名字[hash:10] 保留hash值的前10位,[ext] 保留图片原扩展名[query]添加之前的query参数},// webpack4 写法//  loader:'url-loader',  // 只使用一个loader可以用这种写法,多个loader用use数组//  options: {//   limit: 8 * 1024,  //    esModule: fasle,  // url-loader默认使用es6模块解析,而html-loader引入图片是commonjs,导致图片解析出错,所以得关闭url-loader的es6模块化// },
}

html中图片img

  1. 下载包

npm i html-loader -D

  1. webpack中的配置
{test: /\.html$/,loader: 'html-loader', // 处理html文件的img(负责引入img,从而被处理)
}

其他资源处理

其他资源: 指不需要处理的资源如字体图标

{// 打包其他资源exclude: /\.(css|js|html|png|jpg|less|json)/, //对应排除的文件根据需求修改type: 'asset/resource',generator: {filename: 'static/[hash:10][ext][query]', // 重命名图片的名字[hash:10] 保留hash值的前10位,[ext] 保留图片原扩展名[query]添加之前的query参数}}

devServer

  1. 作用

// 开发服务器, devServer: 自动化(自动编译,自动打开浏览器,自动刷新浏览器~~)
// 特点:只会在内存中编译打包,不会有任何输出
// 启动devServer指令为:npx webpack-dev-server

  1. 下载包

npm i -D webpack-dev-server webpack-cli webpack

  1. 配置
devServer: { // 这里检测的是源文件中的index.htmlstatic: './src/index.html', // 注意这里不能检测打包后的index.html文件,因为webpack-dev-server 在编译之后不会写入到任何输出文件。而是将 bundle 文件保留在内存中,所以打包后的index.html文件是没有任何变化的,所以检测他浏览器不能自动刷新compress: true,port: 3000,open: true
},
  1. 运行项目

npx webpack-dev-server | webpack serve

以上两个命令都可以,任选一个就行

相关文章:

  • 原码、补码、反码、移码是什么?
  • 如何理解 Composition API 和 Options API
  • Linux C++ realpath函数crash的解决方法
  • Spock单元测试框架使用介绍和实践
  • linux中当前目录、上级目录、上上级目录表示方法
  • python—爬虫爬取电影页面实例
  • AI 绘画|Midjourney设计Logo提示词
  • Unity | AssetBundle
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 卢小姐的生日礼物(200分) - 三语言AC题解(Python/Java/Cpp)
  • 哪些企业适合做ISO27001信息安全管理体系?
  • 定制QCustomPlot 带有ListView的QCustomPlot 全网唯一份
  • SpringAI简单使用(本地模型+自定义知识库)
  • Linux处理文件sed
  • Java 新手学习线路,Java 学习路线是怎样的?
  • uniapp自定义tabBar
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Android交互
  • Centos6.8 使用rpm安装mysql5.7
  • codis proxy处理流程
  • exports和module.exports
  • HTTP那些事
  • node学习系列之简单文件上传
  • SQL 难点解决:记录的引用
  • Vue UI框架库开发介绍
  • 工作手记之html2canvas使用概述
  • 用jQuery怎么做到前后端分离
  • 用Visual Studio开发以太坊智能合约
  • UI设计初学者应该如何入门?
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • 如何正确理解,内页权重高于首页?
  • ​configparser --- 配置文件解析器​
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # linux 中使用 visudo 命令,怎么保存退出?
  • (1)(1.13) SiK无线电高级配置(五)
  • (12)目标检测_SSD基于pytorch搭建代码
  • (30)数组元素和与数字和的绝对差
  • (C11) 泛型表达式
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (七)理解angular中的module和injector,即依赖注入
  • (四) Graphivz 颜色选择
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)项目管理杂谈-我所期望的新人
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Core 中的路径问题
  • .Net OpenCVSharp生成灰度图和二值图
  • .NetCore项目nginx发布
  • .NET构架之我见