前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端工程化:Webpack之常见配置详解

前端工程化:Webpack之常见配置详解

原创
作者头像
CodeGoat24
发布于 2022-02-02 13:57:14
发布于 2022-02-02 13:57:14
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

一、前言

相信很多人在学习前端过程中,都接触过webpack。但可能在创建前端项目时,都只是用脚手架vue-cli的初始化命令跑一下,将webpack当成一个黑盒使用,刚开始我也是这样,但是虽然一切配置都能通过脚手架自动完成,我们不用学会如何手动去配置,但是我们也至少应该知道,webpack每条配置的作用

今天,我就在这里分享一下——webpack常见配置及其作用

以下部分图片资源来源于网络,如有侵权,请联系我删除!

在介绍webpack之前,我们先来了解一下什么是前端工程化,从而引入webpack产生的原因

大家可能会以为前端开发仅仅只是

⚫掌握HTML、CSS、JS

⚫能够使用JQuery操作DOM并发起ajax请求

⚫在美化页面样式时,导入bootstrap

⚫实现网页布局时,导入Layui

二、前端工程化

概念

在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化标准化。

具体遵循以下四个“现代化”准则

⚫ 模块化(js 的模块化、css 的模块化、资源的模块化)

⚫ 组件化(复用现有的 UI 结构、样式、行为)

⚫ 规范化(目录结构的划分、编码规范化、接口规范化、文档规范化、 Git 分支管理)

⚫ 自动化(自动化构建、自动部署、自动化测试)

  • 模块化:对 js、css的功能,对静态资源的类型模块化拆分,比如当你用node写接口时,单独把api接口的相关代码抽出来写在一个js文件里
  • 组件化:如bootstrap、layui提供的按钮、导航栏等,都是可以直接拿来复用的组件
  • 规范化:在构建目录结构、编写代码、接口等所要遵循的一些规则
  • 自动化:像热部署、通过git自动发布我们新改动创建的代码等

如果做不到上述这四个“现代化”,那我们平时感觉在写的项目,其实都只是demo。

那么我们在开发时,有没有什么工具能帮助我们做到前端工程化呢?

三、webpack

1、官方概念:

webpack是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)

实际上,它是目前主流的前端工程化的解决方案。

2、功能:

提供了友好的前端模块化开发支持,以及代码压缩混淆、处理不同浏览器端 JavaScript 的兼容性

能优化等强大的功能。

代码压缩能够提高我们程序的运行速度;

解决了兼容性问题,我们就能没有后顾之忧的在项目中写js的高级代码(如ES6)。

这就能让我们开发时只用把重心放到具体功能的实现上,提高了前端开发效率项目的可维护性。

3、webpack的安装(需要在npm包管理器环境)

新建项目空白目录,并运行 npm init –y 命令,初始化包管理配置文件 package.json

新建 src 源代码目录

新建 src -> index.html 首页和 src -> index.js 脚本文件

在项目根目录终端运行如下的命令,安装 webpack 相关的两个包:

npm install webpack@5.42.1 webpack-cli@4.7.2 -D

4、常用配置和基本使用

4.1 在项目中配置 webpack

① 在项目根目录中,创建名为 webpack.config.js 的 webpack 配置文件,并初始化如下的基本配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 使用 Node.js 中的导出语法,向外导出一个 webpack 的配置对象
module.exports = {
  mode: 'development' //mode 用来指定构建模式。可选有development和production
}

webpack.config.js 是 webpack 的配置文件。webpack 在开始打包构建之前,会先读取这个配置文件

并基于我们在配置文件中给定的配置,对项目进行打包,并生成dist文件夹,存储打包后的项目文件。

注意:由于 webpack 是基于 node.js 开发出来的打包工具,因此在它的配置文件中,支持使用 node.js 相关

的语法和模块进行 webpack 的个性化配置。

② 在 package.jsonscripts 节点下,新增 dev 脚本如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"scripts": {
    "dev": "webpack",//scripts下的脚本可以通过npm run运行,如npm run dev,实际上是执行npm run webpack serve
    "build": "webpack --mode production"
  },

③ 在终端中运行 npm run dev 命令,启动 webpack 进行项目的打包构建

4.2 mode 的可选值

mode 节点的可选值有两个,分别是:

development

⚫ 开发环境

⚫ 不会对打包生成的文件进行代码压缩和性能优化

打包速度快,适合在开发阶段使用

production

⚫ 生产环境

⚫ 会对打包生成的文件进行代码压缩和性能优化

打包速度很慢,仅适合在项目发布阶段使用

4.3 webpack 中的默认约定

在 webpack 4.x 和 5.x 的版本中,有如下的默认约定:

① 默认的打包入口文件为 src -> index.js

② 默认的输出文件路径为 dist -> main.js

注意:可以在 webpack.config.js 中修改打包的默认约定

因此,在运行npm run dev后,系统会默认将src -> index.js文件,打包输出到dis -> main.js

疑问:那项目中其他的文件如css、less、jpg文件怎么被打包输出呢?(提前预告下文的loader知识点)

回答:webpack只能解析.js文件,这些类型文件需要对应的loader加载器来解析并打包,生成文件的路径可以自己配置

下面, 我们在 webpack.config.js 配置文件中,通过 entry 节点指定打包的入口。通过 output 节点指定打包的出口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// entry: '指定要处理哪个文件'
  entry: path.join(__dirname, './src/index.js'),
  // 指定生成的文件要存放到哪里
  output: {
    // 存放的目录
    path: path.join(__dirname, 'dist'),
    // 生成的文件名
    filename: 'js/bundle.js'
  },

这样就能让系统将src->index.js,打包输出到dis -> js -> bundle.js

另外,应在 src文件夹下的 index.html 源代码中导入 dist 文件下的打包好的js文件,打包后的bundle.js文件会解析转换index.js文件下的内容,使得任何版本的浏览器都能兼容。

(先别动手,使用下面的webpack-dev-server插件后,就不用导入了)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="../dist/bundle.js"></script>

痛点:但是,这也导致了我们每次对 index.js 文件进行修改,都需要npm run dev,来更新bundle.js文件内容。

五、webpack插件的使用

① webpack-dev-server

⚫ 类似于 node.js 阶段用到的 nodemon 工具

⚫ 每当修改了源代码,webpack 会自动进行项目的打包和构建

webpack-dev-server 可以让 webpack 监听项目源代码的变化,从而进行自动打包构建

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install webpack-dev-server@3.11.2 -D

配置

修改 package.json -> scripts 中的 dev 命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"scripts": {
    "dev": "webpack serve",
  },

② 再次运行 npm run dev 命令,重新进行项目的打包

③ 在浏览器中访问 http://localhost:8080 地址,查看自动打包效果

此时,运行命令后,每次修改源代码,都会在内存自动构建生成新的bundle.js文件,进行实时打包

但是运行命令后,webpack-dev-server 会启动一个实时打包的 http 服务器 http://localhost:8080,打开网址后,会呈现我们项目的根目录结构(下面会说明如何配置更改网址)

点开src,便自动展现了index.html页面(系统会默认打开index.html文件),我们对源代码的任何更改效果都会呈现在上面。

而打包实时生成的bundle.js,保存在我们电脑的内存当中,可以通过http://localhost:8080/bundle.js来访问。

① 不配置 webpack-dev-server 的情况下,webpack 打包生成的bundle.js文件,会存放到实际的物理磁盘

⚫ 严格遵守开发者在 webpack.config.js 中指定配置

⚫ 根据 output 节点指定路径进行存放

② 配置了 webpack-dev-server 之后,打包生成的bundle.js文件存放到了内存

⚫ 不再根据 output 节点指定的路径,存放到实际的物理磁盘上

⚫ 提高了实时打包输出的性能,因为内存比物理磁盘速度快很多

我们index.html的源代码页面上,也会隐式导入生成在内存的bundle.js文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="/bundle.js"></script>//源代码页面上看不到,但是在网页上用"检查"可以看到

痛点: 打开http://localhost:8080后不能直接展现我们index.js页面效果, 必须要点开src才行

疑问: 如何修改http服务器地址?

解决:

1、使用html-webpack-plugin插件来复制index.html文件到项目根目录

2、配置devServer属性

② html-webpack-plugin

⚫ webpack 中的 HTML 插件(类似于一个模板引擎插件

⚫ 可以通过此插件自定制 index.html 页面的内容

思路通过 html-webpack-plugin 插件,将 src 目录下的 index.html 首页,复制一份到项目根目录中

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install html-webpack-plugin@5.3.2 -D

配置:

在webpack.config.js文件中配置 html-webpack-plugin插件 和 devServer属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 1. 导入 html-webpack-plugin 这个插件,得到插件的构造函数
const HtmlPlugin = require('html-webpack-plugin')
// 2. new 构造函数,创建插件的实例对象
const htmlPlugin = new HtmlPlugin({
  // 指定要复制哪个页面
  template: './src/index.html',
  // 指定复制出来的文件名和存放路径
  filename: './index.html'//存放在内存中
})

module.exports = {
plugins: [htmlPlugin],
  devServer: {
    // 首次打包成功后,自动打开浏览器
    open: true,
    // 在 http 协议中,如果端口号是 80,则可以被省略
    port: 80,
    // 指定运行的主机地址
    host: '127.0.0.1'
  },
}

此时, 运行服务器后, 服务器网址会自动打开,呈现index.html页面效果

注意: 复制的index.html文件存放在内存中, 且与源文件不是同一个文件, 复制的index.html生成后, 系统也会自动给它注入内存中实时构建的bundle.js文件

六、loader加载器

1、概述:

在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块。其他非 .js 后缀名结尾的模块,

webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错!

2、作用

协助 webpack 打包处理特定的文件模块

比如:

⚫ css-loader 可以打包处理 .css 相关的文件

⚫ less-loader 可以打包处理 .less 相关的文件

⚫ babel-loader 可以打包处理 webpack 无法处理的高级 JS 语法

3、配置使用

下面挂一下loader加载器的工作流程图

4、常见配置代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module: {
    rules: [
      // 定义了不同模块对应的 loader

      { test: /\.css$/, use: ['style-loader', 'css-loader'] },

      // 处理 .less 文件的 loader
      { test: /\.less$/, use: ['style-loader', 'css-loader', 'less-loader'] },

      // 处理图片文件的 loader
      // 如果需要调用的 loader 只有一个,则只传递一个字符串也行,如果有多个loader,则必须指定数组

      // 打包处理样式表中与 url 路径相关的文件
      // 需要预先安装模块 npm i url-loader@4.1.1 file-loader@6.2.0 -D
      // 在配置 url-loader 的时候,多个参数之间,使用 & 符号进行分隔
      { test: /\.jpg|png|gif$/, use: 'url-loader?limit=470&outputPath=images' },

      // 使用 babel-loader 处理高级的 JS 语法
      // 在配置 babel-loader 的时候,一定要排除 node_modules 目录中的 JS 文件
      { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ }
    ]
  },

5、babel-loader

webpack 只能打包处理一部分高级的 JavaScript 语法。对于那些 webpack 无法处理的高级 js 语法,需要借

助于 babel-loader 进行打包处理

安装

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm i babel-loader@8.2.2 @babel/core@7.14.6 @babel/plugin-proposal-decorators@7.14.5 -D

配置

在项目根目录下,创建名为 babel.config.js 的配置文件,定义 Babel 的配置项如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  // 声明 babel 可用的插件
  // 将来,webpack 在调用 babel-loader 的时候,会先加载 plugins 插件来使用
  plugins: [['@babel/plugin-proposal-decorators', { legacy: true }]]
}

在 webpack.config.js 的 module -> rules 数组中,添加 loader 规则如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module: {
    rules: [
      { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/ }
    ]
  },

七、打包发布

1. 为什么要打包发布

项目开发完成之后,需要使用 webpack 对项目进行打包发布,主要原因有以下两点:

① 开发环境下,打包生成的文件存放于内存中,无法获取到最终打包生成的文件

② 开发环境下,打包生成的文件不会进行代码压缩和性能优化

为了让项目能够在生产环境中高性能的运行,因此需要对项目进行打包发布。

2. 配置 webpack 的打包发布

在 package.json 文件的 scripts 节点下,新增 build 命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"scripts": {
    "dev": "webpack serve",
    "build": "webpack --mode production"
  },

--model 是一个参数项,用来指定 webpack 的运行模式。production 代表生产环境,会对打包生成的文件

进行代码压缩和性能优化。

注意:通过 --model 指定的参数项,会覆盖 webpack.config.js 中的 model 选项。

3. 打包后生成的dist文件夹结构配置

我们的项目中包含图片资源、js文件、css文件等等类型,我们需要进行配置,告诉系统每种类型文件的生成路径。

把 JavaScript 文件统一生成到 js 目录中

在 webpack.config.js 配置文件的 output 节点中,进行如下的配置:

把图片文件统一生成到 image 目录中

修改 webpack.config.js 中的 url-loader 配置项,新增 outputPath 选项即可指定图片文件的输出路径:

5. 自动清理 dist 目录下的旧文件

为了在每次打包发布时自动清理掉 dist 目录中的旧文件,可以安装并在webpack.config.js文件中配置 clean-webpack-plugin 插件:

八、Source Map

概念:

Source Map 就是一个信息文件,里面储存着代码的位置信息。也就是说,Source Map 文件中存储着压缩混淆后的代码,所对应的转换前的位置

有了它,出错的时候,除错工具将直接显示原始代码所在位置,而不是转换后的代码位置,能够极大的方便后期的调试

原始代码大赏:

⚫ 变量被替换成没有任何语义的名称

⚫ 空行和注释被剔除

如何除错?Source Map!

开发环境下

在开发环境下,webpack 默认启用了 Source Map 功能。当程序运行出错时,可以直接在控制台提示错误行

的位置,并定位到具体的源代码。

问题:开发环境下默认生成的 Source Map,记录的是生成后的代码的位置。会导致运行时报错的行数与源代码的行数不一致的问题。示意图如下:

解决:在 webpack.config.js 中添加如下的配置

生成环境下

如果生产环境下,使用Source Map,不可排除不法分子会利用它来“借鉴”你的源码。

此时可以将 devtool 的值设置为 nosources-source-map。实际效果如图所示:

因此,对于Source Map

① 开发环境下:

⚫ 建议把 devtool 的值设置为 eval-source-map

⚫ 好处:可以精准定位到具体的错误行

② 生产环境下:

⚫ 建议关闭 Source Map 或将 devtool 的值设置为 nosources-source-map

⚫ 好处:防止源码泄露,提高网站的安全性

九、总结

认真看完后,是不是对常用的配置和插件的概念和作用有了大致的了解呢?我在下面给你们总结了本篇文章的主要内容:

webpack 的基本使用

⚫ 安装、webpack.config.js、修改打包入口

plugin 的基本使用

⚫ webpack-dev-server、html-webpack-plugin

loader 的基本使用

⚫ loader 的作用、loader 的调用过程

Source Map 的作用

⚫ 精准定位到错误行并显示对应的源码

⚫ 方便开发者调试源码中的错误

如果上述分享有不妥之处,欢迎大家在评论区斧正

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
领导周末喊程序员改bug,程序员霸气回应:在下卖艺不是卖身!
现在不少员工都被公司要求各种加班,周一至周五晚上加,周末加,办公室加,回家加,有偿加,无偿加......
JAVA高级架构开发
2018/10/12
4930
领导周末喊程序员改bug,程序员霸气回应:在下卖艺不是卖身!
大龄程序员的出路在何方?
大龄程序员的出路在何方?这个话题不仅中国程序员关心,国外的程序员也关心!但是国内国外的情况并不一样。我主要关心在中国,大龄程序员的未来在哪里?下面我们一起来看看中国的大龄程序员现在热炒的问题!
JAVA高级架构开发
2018/10/15
2.2K0
大龄程序员的出路在何方?
成为优秀的程序员需要知道的8件事
尽量发布可以运行的代码。不要指望 QA 能给你找出所有的程序错误。要经常并且全面深入地测试你的代码,不断找出可以完善的方法。
JAVA高级架构开发
2018/10/09
3640
成为优秀的程序员需要知道的8件事
4年程序员十面阿里终拿下offer,评级P6
小编现今四年开发经验,前前后后为了进阿里面试十次(阿里旗下—蚂蚁金服,天猫的offer都被hr因学历而被拒,最后的菜鸟面幸运的被录用,拿到P6offer,真正的“十面”阿里!)
JAVA高级架构开发
2018/10/17
2K0
4年程序员十面阿里终拿下offer,评级P6
不是所有的程序员都适合转管理,但是领导力可以有套路练就
最近很多小伙伴对技术栈管理的话题比较感兴趣,我们就继续这个话题,本次分享来自一位贴吧的程序员老司机,他亲自尽力过从技术转向管理岗位,我们听听他的分享:
JAVA高级架构开发
2018/10/11
9350
程序员懊恼面试被屡次遭拒,网友:38岁了心里没点逼数吗?
程序员面试的三道坎,学历、工作经验、年龄。前两者倒也还好,而年龄这个标准始终是程序员们卡在喉咙上的一根刺,不知何时会突然扎穿喉咙,了断性命。现在互联网行业日益趋近年轻化,许多企业对于程序员的年龄标准大约在35岁左右(参考华为35岁离职),若是38岁去求职,结果可想而知!
JAVA高级架构开发
2018/10/29
8750
程序员懊恼面试被屡次遭拒,网友:38岁了心里没点逼数吗?
程序员普遍都有工伤!
作为加班一族、通宵一族、买房一族...程序员的压力可以说非常大了,然而这就出现了一个恶性循环,项目上线要加班,不上线也加班,加班烧脑容易饿,公司福利好,管三餐,待在公司就像家,bug改不完不回家...于是不知不觉中,程序员普遍都胖了!
JAVA高级架构开发
2018/10/24
4720
代码规范固然重要,但是不要再黑程序员了...
第一次看到一侧关于程序猿代码没有规范而被枪杀的文章,开始有朋友在群里吐槽几个平时代码比较“诗意”的同事,大家也就一笑而过了。
JAVA高级架构开发
2018/10/10
3730
代码规范固然重要,但是不要再黑程序员了...
一个程序员的国庆血泪相亲史,惨败而归…
这不,刚下火车,父亲大人就来接我了。在车上,还有另外一个陌生的阿姨(媒婆),我才得知,要去的目的的不是自己家,而是一个女孩的家,没错,就是被安排了相亲,半路杀出了个程咬金。。
JAVA高级架构开发
2018/10/07
5840
程序员如何从技术岗转为技术管理层?
有一个非常有趣的现象:据说大部分的技术管理者,在其从程序员转为管理岗位的时候,都是在领导或公司的要求下,被动的推到管理岗位上的,并非是自己当初有强烈意愿、主动去选择管理岗的。这种被动的比例还不低,高达80%以上。
JAVA高级架构开发
2018/10/10
3.2K0
倾听程序员的心声真的很重要
说到开发产品,没有人比程序员更了解产品。程序员知道产品的优点、缺陷、用途和潜在用途。说起这些,程序员了如指掌,如数家珍。
JAVA高级架构开发
2018/10/09
3550
时间太少,如何阅读?
国庆长假,没有到处跑,闲在家里读读书。看了一下我在豆瓣标记为 “想读” 的书籍已经突破了 300 本,而已标记读过的书才一百多本,感觉是永远读不完了。
JAVA高级架构开发
2018/10/08
6110
月薪8k和月薪38K的程序员差距在哪里?
回想做开发的这八年多,获得了很多,技术能力、培训、出国、大公司的,还记得刚刚出来第一年那段时间,太多东西不懂的,都是一切听从老大的安排,敲敲代码,看看数据库,测试自己和别人的代码;这样干了一年
JAVA高级架构开发
2018/10/19
3660
月薪8k和月薪38K的程序员差距在哪里?
Java后端技术栈,到底如何深入学习?
很多人做Java开发4,5年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变困境,为什么很多人写了7,8年还是一个码农,工作中太多被动是因为不懂底层原理。公司的工作节奏又比较快,难有机会学习架构原理,也没人教,所以这个时候,学习架构原理,扩展思维,对自己以后职业生涯尤为重要。
JAVA高级架构开发
2018/10/18
1.5K0
Java后端技术栈,到底如何深入学习?
程序员面试时应该注意哪些问题?
一程序员去面试,面试官问:“你毕业才两年,这三年工作经验是怎么来的?!”程序员答:“加班。” emmm...
JAVA高级架构开发
2018/10/09
4510
程序员因太过耿直,致苹果官网出现bug......
产品的绝大部分bug,会在测试阶段被消灭,但仍然有不少的bug,脱离测试工程师的魔掌,展现在了用户面前。有些bug十分影响用户体验,不过有些bug,反而会娱乐大众,让人笑翻了天。
JAVA高级架构开发
2018/10/16
3790
程序员因太过耿直,致苹果官网出现bug......
程序员如何在百忙之中不走岔路,不白忙!
程序员忙,似乎是个公论,有些程序员甚至会认为,不忙的程序员无法快速地进步,从而会落伍。或者说,不忙的程序员有可能被公司末尾淘汰掉。对此,一直危机感很重的我深以为然。
JAVA高级架构开发
2018/10/09
4600
开源作者痛斥京东重量级项目抄袭
29 日,开源项目 SeaweedFS 作者 Chris Lu 在知乎发文痛斥京东 TigLab 开源项目 ContainerFS 抄袭其源码,京东曾表示,ContainerFS 是一个“CNCF 级别”的项目:我们还计划提出新的 CNCF 项目,其中一个项目是 ContainerFS,它是一个与 Kubernetes 无缝集成的大规模容器原生集群文件系统。
JAVA高级架构开发
2018/10/07
1.1K0
开源作者痛斥京东重量级项目抄袭
2018年Java程序员的现状,风光背后的危机!
对于进可攻前端,后可守后端大本营的 Java 程序员而言,虽然供应逐年上涨,但是市场似乎对他们依然青睐有加。这些承担着技术招聘市场中高供给高需求的 Java 程序员在 18 年的招聘市场上,真的还能如此风光吗?还是埋下了一些「危机」的伏笔呢?
JAVA高级架构开发
2018/10/25
5200
2018年Java程序员的现状,风光背后的危机!
@程序员,拒绝无聊的代码面试!
过去十多年里,我面试了许多工程师。在那段时间里,我总结了一系列的方法,可以在不看代码的情况下快速准确地评价一名开发人员。
JAVA高级架构开发
2018/10/06
6270
相关推荐
领导周末喊程序员改bug,程序员霸气回应:在下卖艺不是卖身!
更多 >
LV.2
这个人很懒,什么都没有留下~
目录
  • 一、前言
  • 二、前端工程化
  • 三、webpack
    • 1、官方概念:
    • 2、功能:
    • 3、webpack的安装(需要在npm包管理器环境)
    • 4、常用配置和基本使用
      • 4.1 在项目中配置 webpack
      • 4.2 mode 的可选值
      • 4.3 webpack 中的默认约定
  • 五、webpack插件的使用
    • ① webpack-dev-server
      • 安装:
      • 配置:
    • ② html-webpack-plugin
      • 思路:通过 html-webpack-plugin 插件,将 src 目录下的 index.html 首页,复制一份到项目根目录中
      • 安装:
      • 配置:
  • 六、loader加载器
    • 1、概述:
    • 2、作用
    • 3、配置使用
      • 4、常见配置代码:
    • 5、babel-loader
      • 安装:
      • 配置:
  • 七、打包发布
    • 1. 为什么要打包发布
    • 2. 配置 webpack 的打包发布
    • 3. 打包后生成的dist文件夹结构配置
      • 把 JavaScript 文件统一生成到 js 目录中
      • 把图片文件统一生成到 image 目录中
      • 5. 自动清理 dist 目录下的旧文件
  • 八、Source Map
    • 概念:
    • 原始代码大赏:
    • 开发环境下
    • 生成环境下
  • 九、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档