自定义Webpack配置

2023-11-07

1 初始化并创建要被打包的文件

首先创建文件夹webpack-demo(随便起一个),用来演示打包过程。在该文件夹下终端运行命令,对项目进行初始化操作,对包进行管理:

npm init # 输入命令后一直敲回车即可
npm init -y # -y是yes的意思,在初始化时省去敲回车的步骤

在这里插入图片描述
命令成功运行之后,该文件夹下出现了package.json文件,文件内容具体如下:

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

然后在本地安装webpackwebpack-cli,执行以下命令:

npm install webpack webpack-cli --save-dev

在这里插入图片描述
该命令执行完成之后,在当前目录下出现了node_modules文件夹和package-lock.json文件,目录结构如下:
在这里插入图片描述
webpack-demo文件夹下创建文件夹src,在src下创建两个文件,index.jshello.js,目录结构如下:
在这里插入图片描述
hello.js文件中编写如下代码:

function hello() {
    console.log("hello");
}
export default hello;

index.js文件中编写如下代码:

import hello from "./hello";
hello();

到这一步我们的准备工作就完成了,接下来在该示例上操作。

2 命令行配置

webpack-cli给我们提供了丰富的终端命令行指令,可以通过以下命令查看:

npx webpack --help

在这里插入图片描述
我们看到有很多命令可以帮助我们进行配置,接下来我们演示几个。

# --entry 指定了入口文件为index.js
# --mode 指定模式为production生产环境
npx webpack --entry ./src/index.js --mode production

运行该命令之后,我们可以看到目录新出现了dist文件夹,文件夹中有main.js文件,该文件就是我们打包之后的文件。

那么dist文件夹的名字和main.js文件的名字可以自己定义吗?答案是可以,但是我们需要在命令行中输入其他的参数。

到这里我们发现,命令行不方便也不直观,而且不能保存我们的一些配置,因此webpack为我们提供了通过自定义配置文件的方式帮助我们自定义配置参数。

3 配置文件配置

我们在webpack-demo文件夹中新建文件webpack.config.js文件,这个文件名不能随意起,因为webpack会自动读取文件,在该文件中配置entryoutput制定输入和输出的文件:

module.exports = {
    entry: "./src/index.js", // 设置入口文件

    output: {
        filename: "bundle.js", // 指定输出的文件
        path: "./dist", // 指定输出的路径
    }
}

配置完成之后我们在终端运行命令来打包文件:

npx webpack

在这里插入图片描述
结果我们可以看到,终端为我们报了错,提示我们输出路径必须是一个绝对路径。那么我们可以通过node中的path模块来获得当前文件的路径,通过该路径来设置输出路径:

const path = require("path");
module.exports = {
    entry: "./src/index.js", // 设置入口文件

    output: {
        filename: "bundle.js", // 指定输出的文件
        // path.resolve()把一个路径或路径片段的序列解析为一个绝对路径
        // __dirname是当前文件所在的目录
        path: path.resolve(__dirname, "./dist"), // 指定输出的路径
    }
}

我们再执行npx webpack,我们发现打包成功了,不过终端提示我们还应该设置一下mode,我们在配置文件后添加上mode即可。
在这里插入图片描述

const path = require("path");
module.exports = {
    entry: "./src/index.js", // 设置入口文件

    output: {
        filename: "bundle.js", // 指定输出的文件
        // path.resolve()把一个路径或路径片段的序列解析为一个绝对路径
        // __dirname是当前文件所在的目录
        path: path.resolve(__dirname, "./dist"), // 指定输出的路径
    },

    mode: "production" // 模式:生产环境
}

打包之后,我们可以看到dist文件夹下面出现了bundle.js文件,该文件就是我们打包之后的文件。
在这里插入图片描述

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

自定义Webpack配置 的相关文章

随机推荐

  • 华为od寻找关键钥匙

    题目描述 小强正在参加 密室逃生 游戏 当前关卡要求找到符合给定 密码K 升序的不重复小写字母组成 的箱子 并给出箱子编号 箱子编号为1 N 每个箱子中都有一个字符串s 字符串由大写字母 小写字母 数字 标点符号 空格组成 需要在这些字符串
  • 服务机器人研究报告:产业链分析及投资前景预测

    服务机器人研究报告 产业链分析及投资前景预测 2017 08 31 08 37中国投资咨询网 服务机器人在国内发展的阻力远远小于工业机器人 一方面 服务机器人是国内公司与国外公司差距较小的领域 国内企业的服务机器人往往能针对特定市场进行开发
  • 用stm32f103点灯的一些模式

    关于stm32点灯 因为使用的芯片就母版可能不是一样的 这里我使用的是stm32f103c8t6来进行讲解 首先要点亮一个灯 就需要知道灯是一个外设 就涉及到gpio的一些知识点 第一步就是要对板子原理图上的硬件连接进行一定的了解 下面这是
  • 堆排序HeapSort

    堆排序的最好最坏平均时间复杂度都为nlogn adjustment执行次数为logn for循环次数为3 2n 空间复杂度为O 1 没有使用额外空间 include
  • 文盘Rust -- tonic-Rust grpc初体验

    gRPC 是开发中常用的开源高性能远程过程调用 RPC 框架 tonic 是基于 HTTP 2 的 gRPC 实现 专注于高性能 互操作性和灵活性 该库的创建是为了对 async await 提供一流的支持 并充当用 Rust 编写的生产系
  • 如何保护移动应用程序安全–移动应用程序安全检查表

    Security has always been a major concern for businesses And this concern is even greater when it comes to mobile apps 安全
  • 全程 AIGC 游戏创作,2小时开发微信小游戏!(完整ChatGPT调教流程)

    给 AI 打工 2小时开发一款3D小游戏可行么 源码下载地址见文末 最近 科技发展是日新月异 如果说 Stable Diffusion 和 Mid Journey 只是卷死了美术 我们还在庆幸研发不能被替代 那么 3 月份出来的 GPT4
  • react-router-dom的基本使用

    React Router Dom 1 React Router react router是一个核心库 我们在做PC端时要用react router dom 而在移动端我们要用React Router Native 2 React Route
  • 无极超分辨率

    文章目录 前言 一 Meta SR 1 1 Meta SR A Magnification Arbitrary Network for Super Resolution 1 2 Location Projection 1 3 Weight
  • Android Update Engine 分析(二十一)Android A/B 更新过程

    0 背景 早期 Android A B 系统升级在 Android 7 1 版本推出时 参考文档十分有限 也就是 Android 官方大概有两三个页面介绍文档 我的第一篇 A B 系统分析文章 Android A B System OTA分
  • php使用ecc算法进行签名,ECDSA签名算法(ECC椭圆曲线算法3)

    现在有一个场景 Alice想要用私钥签名一个数据 Bob想要使用Alice的公钥验证这个签名 只有Alice能够进行计算签名然后得到签名 每个人都能验证签名值 首先Alice和Bob拥有相同的椭圆曲线参数 算法被签名称之为ECDSA 是DS
  • 关于OpenGL纹理尺寸的坑 - 图像行偏移,出现异色条纹

    学习OpenGL时想简单创建一个纹理 但马上就出现错误 错误效果如下 原图如下 由于之前没有碰过这种问题 费了好大一番功夫才找到问题所在 原始图片尺寸为210 220 OpenGL版本与教程一致 为3 3 把像素值打印出来观察之后发现 传入
  • Spring 特性

    目录 核心特性 数据存储 Web 技术 Web Servlet 技术栈 Spring 1 4的唯一支持 Web Reactive 技术栈 Spring 5引入 技术整合 Integration 测试 Testing Spring 模块化设计
  • DeformableDetr论文简介+mmdet源码解读

    文章目录 前言 一 论文解读 1 1 研究问题 1 2 可形变注意力模块 1 3 拓展到多层特征图 二 mmdet源码讲解 2 1 图像特征提取 2 2 生成mask和位置编码 2 3 送入Transformer 2 3 1 Transfo
  • 机器学习之朴树贝叶斯②——调库实现

    文章目录 多项式朴素贝叶斯 MultinomialNB 高斯朴素贝叶斯 GaussianNB 多项式朴素贝叶斯 MultinomialNB sklearn naive bayes MultinomialNB alpha 1 0 fit pr
  • 为什么HashMap线程不安全?

    我们都知道 HashMap 是线程不安全的 那 HashMap 为什么线程不安全 JDK1 8 还有这些问题吗 如何解决这些问题呢 本文将对该问题进行解密 多线程下扩容死循环 JDK1 7中的 HashMap 使用头插法插入元素 在多线程的
  • 如何在深度学习中处理图像数据?

    深度学习在图像处理领域取得了重大的突破 可以用于图像分类 目标检测 图像生成等各种任务 处理图像数据的关键是将图像转换为适合深度学习模型处理的形式 下面是处理图像数据的一般步骤 1 数据准备 收集和整理用于训练的图像数据集 数据集应包含图像
  • MySQL基础篇——第10章 DDL(数据定义):创建和管理表

    MySQL基础篇 第10章 DDL 数据定义 创建和管理表 1 基础知识 1 1 一条数据存储的过程 存储数据是处理数据的第一步 只有正确地把数据存储起来 我们才能进行有效的处理和分析 MySQ的数据存储过程 创建数据库 确认字段 创建数据
  • 基于Matlab实现图像目标边界描述

    图像目标边界描述是图像处理中的一个重要问题 边界描述可以用于目标检测和识别 图像分割等应用 Matlab提供了强大的图像处理工具箱 可以方便地实现图像目标边界描述 本文介绍一种基于边缘检测的图像目标边界描述方法 并提供一个简单的案例源码 文
  • 自定义Webpack配置

    自定义Webpack配置 1 初始化并创建要被打包的文件 2 命令行配置 3 配置文件配置 1 初始化并创建要被打包的文件 首先创建文件夹webpack demo 随便起一个 用来演示打包过程 在该文件夹下终端运行命令 对项目进行初始化操作