Webpack5 系列(一):基础篇3

简介: Webpack5 系列(一):基础篇3

1. 默认的配置文件

在文件根目录下创建:

touch webpack.config.js

webpack.config.js

// webpack 配置文件
const path = require('path'); // node.js 的路径模块
module.exports = {
  // entry: './src/index.js', // 入口文件(简写形式)
  entry: {
    main: './src/index.js',
  },
  output: {
    path: path.resolve(__dirname, 'dist'), // 打包后的路径
    filename: 'bundle.js', // 打包后的文件名
  }
}

以上是简单的打包配置,配置项包括入口文件、打包路径、打包文件名。

其中,入口文件是指一个项目的主文件,一般来说,所有的模块都会被加入到这个文件中,类似于 vue-cli 中的 main.js 文件。

之后,运行 npx webpack,即可按照此配置文件进行打包。

2. 自定义的配置文件

现在,如果我们并没有将配置文件设置为默认的 webpack.config.js,

而是使用了其他的名字,例如:my-webpack-config.js,

在这种情况下,我们该如何以这个自定义的配置文件作为配置的标准来打包呢?

通过以下命令即可:

npx webpack --config my-webpack-config.js

运行结果如下:

1688267261700.png

3. 简化打包流程

以上,我们都是通过手动的 npx webpack 来打包的!

实际上,还可以利用 package.json 中的 scripts 字段来编写运行脚本,通过脚本进行打包。


// ...
"scripts": {
  "bundle": "webpack"
},
// ...

之后,通过 npm run bundle 就可以打包了。

1688267287465.png疑惑:为什么 "bundle" 后面不写成:"npx webpack" 呢?

原因在于,当你运行 npm run bundle 时,它会先去 node_modules 文件夹中去找是否安装了 webpack 这个指令,如果有就会执行了,相当于被翻译成了 webpack 这个命令。这个与 npx webpack 是类似的,但并不是相等的,本文前面有叙述过,请自行查找~

(也就是看 node_modules 中的 webpack 下的 bin 中是否有对应的可执行指令文件,这块需要了解 Node.js 的内容,此篇不论。)

参考:webpack.js.org/guides/gett…

4. 打包模式

每次打包完,打包内容中总有一段 WARNING 警告,提醒我们设置打包模式(mode)。

默认情况下,它被设置为 'production',我们也可以自行配置:

// webpack.config.js
const path = require('path');
module.exports = {
  mode: 'development', // 'development' | 'production'
  // entry: './src/index.js',
  entry: {
    main: './src/index.js',
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },
}

可以配置为开发模式或者生产模式:

  • 开发模式:本地环境
  • 生产模式:线上环境(代码是压缩的)

具体有何不同,在打包后,打开 dist 文件夹下的 main.js,便可一目了然,此处不再赘述。

小结

以上,是本篇的所有内容。 最后回答一下前言部分的问题:

  • 为什么会使用 Webpack?模块化、预处理。
  • Webpack 打包流程:确保存在 package.json 的情况下去打包,注意配置项的设置。
  • Webpack 的本源:模块打包器,记住是模块。
  • Webpack 的配置文件:webpack.config.js,配置项:mode/entry/output
  • 简化 Webpack 打包流程:设置 package.json 中的 scripts 字段。

添加我的微信:enjoy_Mr_cat,共同成长,卷卷群里等你 🤪。

以上,感谢您的阅读~


目录
相关文章
|
数据采集 网络协议 安全
|
存储 NoSQL 算法
如何借助Redis更高效统计UV?——Hyperloglog篇
Redis的HyperLogLog数据类型是用于近似计算大规模数据集中不重复元素基数的工具,它以低空间开销(约12KB)提供高精度的估算(误差率约0.81%)。通过`pfadd`添加元素,`pfcount`统计数量,`pfmerge`合并多个HyperLogLog,实现去重计数。尽管内部存储为字符串,但它是概率数据结构,适合高效UV统计和其他大数据场景。
230 0
|
Android开发
Android 对鼠标事件的监听实现
Android 对鼠标事件的监听实现
459 1
|
关系型数据库 MySQL Linux
Linux centos 6.5 - Mysql 安装 、卸载、修改密码、忘记密码 并异常处理
Linux centos 6.5 - Mysql 安装 、卸载、修改密码、忘记密码 并异常处理
480 0
|
Linux 索引 关系型数据库
Linux 终端命令之文件目录操作,对比Dos相关命令
Linux 终端命令之文件目录操作,对比Dos相关命令
277 0
Linux 终端命令之文件目录操作,对比Dos相关命令
|
SQL 缓存 算法
【MySQL】主从复制(重点:主从复制原理)
本文重点介绍MySQL的主从复制概述,作用,原理,同步数据一致性问题。
319 0
|
Java 测试技术 Maven
【SpringBoot】多环境开发、分组管理、开发控制
【SpringBoot】多环境开发、分组管理、开发控制
179 0
|
人工智能 自然语言处理 自动驾驶
破壁人AI百度:科技公司反内卷的典型样本
破壁人AI百度:科技公司反内卷的典型样本
破壁人AI百度:科技公司反内卷的典型样本
|
数据库
订单服务------技术点及亮点2
订单服务------技术点及亮点2
111 0
|
存储 前端开发 JavaScript
【Git|GitHub|SSH|Sourcetree 上篇】Git环境搭建及核心概念学习
当下,几乎所有开发者都要接触版本控制系统(VersionControlSystem, 简称VCS), 这种工具让他们在分工合作时避免了不必要的重复与冲突,如果遇到什么问题,也可以及时回退到之前的版本。当今最流行的版本控制系统(至少在网络开发者中是这样的)是Git,和与之关联的编程社区网站GitHub、Gitee等等。我们很少独自完成一个项目,而在分工合作的同时我们都会有与他人的工作相冲突的风险:尤其是当两个人同时尝试修改同一段代码的时候。所以我们需要有相应的机制用以避免这种情况。
262 0
【Git|GitHub|SSH|Sourcetree 上篇】Git环境搭建及核心概念学习