Webpack 中常用的loader和plugin已经webpack如何配置

2023-11-17

dist文件夹存放打包后的文件

动态获取出口路径,需要有webpack init 生成package.js文件

 1.1webpack是什么

webpack 是一种前端资源构建工具,一个静态模块打包器 (modulebundler)
webpack 看来 , 前端的所有资源文件 (js/json/css/img/less/...) 都会作为模块处理。
它将根据模块的依赖关系进行静态分析,打包生成对应的静态资源 (bundle)

1.2webpack五个核心概念

1.2.1Entry

入口(Entry)指示webpack以哪个文件为入口起点开始打包,分析构建内部依赖图。

1.2.2Output

输出(Output)指示webpack打包后的资源bundles输出到哪里去,以及如何命名。

1.2.3Loader

Loader webpack 能够去处理那些非 JavaScript 文件 (webpack 自身只理解
JavaScript)

1.2.4Plugins

插件 (Plugins) 可以用于执行范围更广的任务。插件的范围包括,从打包优化和压缩,
一直到重新定义环境中的变量等。

1.2.5Mode

模式(Mode)指示webpack使用相应模式的配置

3.2打包样式资源

css-loder less-loder style-loder

3.3打包HTML资源

HtmlWebpackPlugin

3.4打包图片资源

url-loaderfile-loader

3.6devserver

devServer: {
// 项目构建后路径
contentBase: resolve ( __dirname , 'build' ),
// 启动 gzip 压缩
compress: true ,
// 端口号
port: 3000 ,
// 自动打开浏览器
open: true
}

运行指令npx webpack-dev-server

帮助我们自动刷新浏览器,打开浏览器,就不用我们每一次改了代码都要webpack一下才可以看见网页的变化

4 章:webpack 生产环境的基本配置

4.1 提取 css 成单独文件

MiniCssExtractPlugin插件

4.2 css 兼容性处理

postcss-loader

 4.3 压缩 css

OptimizeCssAssetsWebpackPlugin

4.4 js 语法检查

eslint-loader

4.5 js 兼容性处理

v babel-loader @babel/core @babel/preset-env @babel/polyfill core-js

4.6 js 压缩

mode: 'production'

生产模式下js会自动压缩

4.7 HTML 压缩

5 章:webpack 优化配置 

HMR

一个模块发送改变只会重新打包这一个模块,不会重新打包所有模块

把hot开启成true

5.2 source-map

打包之后的代码如果出错了,可以定位到源代码上面

5.3 oneOf

放在oneof下的

不能有两个配置处理同一种类型文件        

5.4 缓存

 用bable loder 

5.5 tree shaking

Tree Shaking指的就是当我引入一个模块的时候,我不引入这个模块的所有代码,我只引入我需要的代码,这就需要借助webpack里面自带的Tree Shaking这个功能,帮助我们实现

5.6 code split

可以将 node_modules 中代码单独打包一个 chunk 最终输出,把一个js文件划分成多个小的js文件

5.7 lazy loading

import 加箭头函数

5.8 pwa

离线访问

workbox-webpack-plugin

5.9 多进程打包

thread-loader

5.10 externals

拒绝打包

        

5.10 dll 

下面是具体使用webpack的细节了

在项目中使用webpack

1.webpack 需要打包的文件路径 打包后路径
2.因为webpack每次都要入口和出口,很麻烦,所以创建一个webpack.config.js文件用来配置入口和出口,再到package.json配置scripts的bulid
那么每次就可以用npm run build来执行打包,index.html引用打包后的资源文件
3.再后来,webpack.config.js文件中有开发时需要的东西,又有运行时需要的东西,所以现在要把他们分离开来
bulid文件下放base.config放公共的都需要的,dev.config放开发时需要的,prod.config放运行时需要的
4. 那这个时候webpack.config文件就没用了可以删除了
但是这样当我恩 npm run build 的时候会告诉我们没有webpack.config文件我们就要到package.json文件当中去找到script的bulid去配置
5.这个时候用npm run build会打包到build文件夹下的dist文件夹,但我们不希望这样做,需要修改base.config文件下的path,让他能打包到
build文件夹之外的一个dist文件夹(总的一个流程

开始

 前端面是打包的文件,后面是打包之后放的位置

 webpack会自动帮我们找到打包文件依赖的文件一并帮我们打包进去

每次都要webpack入口文件和打包后的地址很麻烦怎么办

创建一个webpack.config.js文件

 这里依赖了第三方包,那么先npm init -y再npm install导入依赖的包

 用webpack的时候一般不用webpack来启动可以再packjson文件中搞一个映射之后就可以用

npm run bulid

 

再index.html引用打包后的文件 

css-loader

npm install --save-dev css-loader 安装loader,当然也要安装style-loader

安装之后还要再webpack.config.js文件中配置

 npm install --save-dev less-loader less 安装好loader还要到webpack.config.js文件中配置

 url-loader

npm install --save-dev url-loader

webpack.config.js文件中配置

 limit是限制图片大小

  当我们打包一张图片后,最后代码中的路径还是会加到src下的图片中去找,但是我们需要的是dist打包之后的文件夹下的图片所以要在webpack.config.js文件中配置publicPath,以后只要涉及到url的内容都会自动帮我们配置publicPath后的路径

 

 es6转es5

npm install --save-dev babel-loader@7 babel-core babel-preset-es2015(看上去就感觉过时了,可以查一下,现在怎么用)

webpack.config.js文件中配置

 webpack使用vue的配置

npm install vue --save

这个app可以删掉的

 配置别名,到时候vue就是runtime compliler而不是runtime only了

 vue中的templet

 前端现在用spa页面的话就不要在index.html写别的代码了,可以写在入口文件vue下的templete中

 

 Vue终极使用方案

 把vue中的代码抽到APP组件当中去

 

把app这个组件抽离出去,创建一个app.js

 

 但是到现在还是不够,app.js中的模板和js代码还是混在了一起,不够好

 创建一个app.vue文件,把模板代码放过来

 把js代码放到app.vue script的标签当中

 .vue文件打包需要

npm install vue-loader vue-template-compiler --save-dev

还要配置webconfig.js

 APP.vue组件也可以使用其他的组件,

 

 可以用extensions来省略扩展名

 添加版权的plugin

记得要导入webpack

 因为index文件是没有打包到dist文件当中去的,呢这样就没有效果了所以我们需要打包index.html文件到dist文件当中

 导入plugin

 打包index.html文件之后,之前配置的publicpath就多余了

打包之后的index.html不会自动帮我我们写div id=app这段代码的,我们要配置htmlwebpcakplugin

 

实时监控我们的代码,不用每次运行前都要npm run build

 

 这个时候就不是用npm run build来运行了,这个时候应该用webpcak-dev-server但这个时候会因为全局和局部的环境问题所以要找到dist/.bin/webpcak-dev-server这个文件

在package.json文件修改scripts

 

 加--open可以帮我们自动打开浏览器 

现在,webpack.config.js文件中有开发时需要的东西,又有运行时需要的东西,所以现在要把他们分离开来

base放公共的都需要的,dev放开发时需要的,prod放运行时需要的

 npm install  webpack-merge --save-dev

运行时配置

 开发时配置

 那这个时候webpack.config文件就没用了可以删除了

但是这样当我恩 npm run build 的时候会告诉我们没有webpack.config文件我们就要到package.json文件当中去找到script的bulid去配置

 但是打包之后的资源就没放到dist文件夹下面了,他会打包到build文件夹下在创一个dist文件

我们去要去base.config下修改路径改成../dist这样才会打包到build文件夹之外再创一个dsit文件

webpack的东西就到此结束了,接下来可以看看vue cli的内容,他可以帮我们快速配置好webpack的一些配置,还有一些文件可以帮我们直接创建好,搭建好vue需要的环境,可以看我的另一篇文章

 vue cli

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack 中常用的loader和plugin已经webpack如何配置 的相关文章

  • AI模型推理(4)—— 认识ServingRuntime

    参考 Serving Runtimes KServe Documentation Website 模型推理服务化 如何基于Triton开发自己的推理引擎 知乎 GitHub triton inference server server Th
  • overleaf常见使用操作

    overleaf常见使用操作 数学符号的使用 图片的插入 表格的插入 参考文献 总结 数学符号的使用 链接 最全overleaf在线编辑数学公式以及遇到错误的解决方法 这里主要记一下集合的使用 并集 A cup B D D 1
  • 记一次Prometheus监控下的“内存飙升”事件

    问题描述 尝试定位问题 错误的表达式 重叠的时间序列 Prometheus的高可用机制 联邦集群 修改PromQL表达式 结语 本文将介绍一次在使用Prometheus过程中由于表达式错误引发的问题 以及解决过程 问题描述 项目上的API用

随机推荐

  • Json的float单精度浮点数类型支持Can't assign value '11.88' (type System.Double) to type System.Single

    今天遇到个问题Can t assign value 11 88 type System Double to type System Single litjson不支持单精度浮点数float 只用修改JsonMapper cs脚本就可以 一共
  • 机器学习之从基础数学深入剖析逻辑回归(案例理论相结合)

    逻辑回归 一 从回归问题到分类问题 回归基础请见上一篇文章 https blog csdn net sjjsaaaa article details 115967347 1 机器学习中的分类问题 事物的类别 正确的分类观是建立科学体系 训练
  • 数字系统的信息表示

    数字系统的信息表示 1 什么是信息 2 数字系统是如何表示一个连续值的信息 3 使用数字信号的优势 4 将模拟信号表示成数字信号形式过程 5 为什么数字系统要采用二进制 6 噪声容限 1 什么是信息 信息是对物质世界与人类社会中存在的各种各
  • 网络安全中的欺骗攻击与防御技术

    在Internet上计算机之间相互进行的交流建立在两个前提之下 认证 信任 认证是网络上的计算机用于相互间进行识别的一种鉴别过程 经过认证的过程 获准相互交流的计算机之间就会建立起相互信任的关系 信任和认证具有逆反关系 即如果计算机之间存在
  • 介值定理究竟在讲什么?

    介值定理 书本上的定义 翻译成人话就是 函数最原始的定义 我们初中就知道 一个函数最根本的性质就是 函数值 自变量值 一一对应 所以介值定理就是在反复说一件事 一个数如果属于值域 在定义域内 一定能够找到一个 自变量 与其对应 当然这个结论
  • Shell—关于source,bash如何执行

    通过对一个脚本问题的分析 发现了自己的一个知识误区 我想 有必要写篇博客总结一下 关于source source test sh 与 test sh 二者用法相同 是读取脚本test sh中的内容 依次在当前脚本中执行 且不会建立新的子sh
  • 【论文精读IEEE_2023_6】FlowFace++: Explicit Semantic Flow-supervised End-to-End Face Swapping

    论文精读CVPR 2023 6 FlowFace Explicit Semantic Flow supervised End to End Face Swapping 一 前言 Abstract I INTRODUCTION II RELA
  • matlab 三维激光雷达点云的路缘检测与跟踪

    目录 Introduction Download Lidar Data Set Preprocess Data Detect Road Shape Detect Road Curbs Track Curb Points Analyze Dr
  • 记录用ConstraintLayout实现控件view最大高度的过程

    背景 我项目里用到个popupWindow 内容是掉接口获取的list 长度不固定 就想着弄个最大高度 让他在内容过多的时候不会太长怼到屏幕底部 开整 看constraintLayout的文章说用android maxHeight 250d
  • how to activate XMind8 to pro version.

    From activate Xmind 8 in step 3 run setup sh in sudo command and use the following command to run XMind XMind Activate X
  • 立创开源

    一 项目说明 我们在使用单片机设计项目时经常需要用到ADC功能 但是众所周知 单片机是很脆弱的东西 一旦采样 分压后 的电压超过3 3v就会瞬间罢工 在烧毁4 5个单价不菲的单片机后我认为使用外部ADC很有必要 由此本项目诞生 二 原理图
  • 【解决】nltk.download()报错:errno54: connection reset by peer

    报错详情 import nltk gt gt gt nltk download nltk data Error loading
  • github不再支持账号密码解决方案

    今天在向github上传代码的时候 突然不能上传了 终端报错信息如下 remote Support for password authentication was removed on August 13 2021 Please use a
  • C语言中将变量的数值打印到.txt文件

    1 C语言中只需加入以下代码即可将变量的数值打印到 txt文件中 FILE fp fopen dayin txt a fprintf fp d n 变量名 fclose fp 2 若想每次运行C程序就覆盖掉上一次生成的 txt文件 则需要先
  • 深入PCI与PCIe之一:硬件篇

    PCI总线和设备树是X86硬件体系内很重要的组成部分 几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上 虽然Intel为了方便各种IP的接入而提出IOSF总线 但是其主体接口 primary interface 还依然是PCIe形
  • 人才盘点的主角是业务部门负责人还是HR?

    你的企业 是否存在以下问题 人才储备不足 关键岗位人员离职后 没有合适的马上接替 人才质量不高 企业战略变革转型期 不知谁可以引领和驱动变革 人才现状不清 新的业务 新的项目要开拓 不知合适的人才在哪里 人才分布不均 成熟业务部门人才扎堆
  • gin框架38--使用中间件

    gin框架38 使用中间件 介绍 案例 说明 介绍 本文主要介绍如何在gin框架中使用中间件 并通过案例加以说明 使用MyBenchLogger中间件来输出特有的日志 用AuthRequire中间件来实现基础认证 案例 package ma
  • Cost function

    cost function的形式 cost function的推导满足以下过程 1 认为error 满足某个分布 写出样本点xi的样本的error 2 认为样本点是相互独立的 推导出其对数似然函数 3 求偏导 是得导函数为0 分离常数部分
  • Java 高精度计算 BigDecimal 和 BigInteger

    BigDecimal 在 Java 中 表示小数值一般使用 float 或者 double 类型 可以用于科学计算或者工程计算等 数学意义上的小数是连续的 但 float 和 double 只能表示其中的一些离散点 如果我们要表示的数值刚好
  • Webpack 中常用的loader和plugin已经webpack如何配置

    dist文件夹存放打包后的文件 动态获取出口路径 需要有webpack init 生成package js文件 1 1webpack是什么 webpack 是一种前端资源构建工具 一个静态模块打包器 modulebundler 在 webp