webpack配置之---output.clean

server/2025/2/12 2:25:24/

output.clean

在 Webpack 5 中,output.clean 配置项是一个新的功能,旨在自动清理输出目录(例如 dist 文件夹),在每次构建时删除其中的旧文件。这个配置项使得构建输出更加干净,避免了存留旧的、不再需要的文件。

1. 基本功能

output.clean 可以用来控制 Webpack 在构建前是否清除输出目录中的文件。通常,WebPack 会将新构建的文件输出到一个指定的目录(比如 dist),并且保留先前构建的文件。使用 output.clean 可以在每次构建时自动删除旧的文件,确保输出目录的清洁。

2. 配置方式

output.clean 可以是一个布尔值,或者是一个对象,提供更细粒度的配置选项。

2.1 基本配置(布尔值)

如果设置为 true,Webpack 将在每次构建之前清空输出目录中的所有文件。

module.exports = {output: {path: path.resolve(__dirname, 'dist'),clean: true  // 在每次构建时清理 dist 目录}
};
2.2 细粒度配置(对象)

output.clean 也可以是一个对象,提供更多配置项来控制如何清理输出目录。

module.exports = {output: {path: path.resolve(__dirname, 'dist'),clean: {keep: /[\\/]static[\\/]/,  // 保留 static 目录下的文件dangerouslyAllowCleanPatternsOutsideProject: true  // 允许删除项目外的文件(不推荐使用)}}
};

3. 可用配置选项

output.clean 设置为对象时,你可以配置以下选项:

  • keep: 可以设置一个正则表达式或一个字符串数组,表示要保留的文件或目录。如果你希望保留输出目录下的某些文件或目录,可以使用这个选项。例如,保留 static 目录下的文件。

keep: /[\\/]static[\\/]/,  // 保留 static 目录下的文件
  • dangerouslyAllowCleanPatternsOutsideProject: 如果设置为 true,Webpack 将允许删除项目外部的文件(即输出目录之外的文件)。这个选项应该谨慎使用,因为它可能会删除你不希望删除的文件。
dangerouslyAllowCleanPatternsOutsideProject: true  // 不推荐使用,可能删除项目外的文件

4. 默认行为

如果不配置 output.clean,Webpack 默认不会清理输出目录。这意味着,如果你在一个持续集成的环境中构建或频繁构建时,旧文件可能会留在输出目录里,造成不必要的文件堆积。

5. 性能影响

启用 output.clean 时,每次构建前都会删除输出目录中的文件。如果你有非常大的输出目录,可能会导致一些性能上的开销。不过在多数情况下,这个过程是快速的,而且可以确保构建输出是干净的。

6. 结合插件使用

虽然 output.clean 可以清理构建输出目录,但在一些复杂的构建中,你可能还需要与其他插件(如 clean-webpack-plugin)配合使用,以便更精细地控制输出目录清理的过程。通常,output.clean 已经足够满足常规需求。

7. 总结

  • output.clean:用于在构建时清理输出目录,避免残留旧的构建文件。
  • 布尔值配置:设置为 true 时,Webpack 每次构建前会清理输出目录。
  • 对象配置:可以用来保留特定文件或目录,或者允许删除项目外的文件。
  • 推荐使用:推荐开启 output.clean,以确保输出目录的清洁,避免过时的文件干扰构建。

http://www.ppmy.cn/server/166919.html

相关文章

WEB攻防-文件下载文件读取文件删除目录遍历目录穿越

目录 一、文件下载漏洞 1.1 文件下载案例(黑盒角度) 1.2 文件读取案例(黑盒角度) 二、文件删除 三、目录遍历与目录穿越 四、审计分析-文件下载漏洞-XHCMS 五、审计分析-文件读取漏洞-MetInfo-函数搜索 六、审计分析-…

MAC国内安装Homebrew的方法

前言 今天尝试安装create-dmg将python脚本打包成mac可安装的dmg文件,发现需要通过brew安装,官方给的建议下载Homebrew,但发现新电脑里没有,于是尝试Homebrew下载,但发现Homebrew不存在,国内安装不了Homebre…

van-list的使用

<van-listv-if"joblist && joblist.length > 0"v-model:loading"loading":finished"finished":immediate-check"false"finished-text"没有更多了"load"onLoad">// 加载 const loading ref(fals…

深入解析 Kafka 消费者偏移量管理

在使用 Kafka 进行消息消费时&#xff0c;偏移量管理是一个非常重要的概念。它直接关系到消息的重复消费、丢失以及系统的可靠性。本文将详细介绍 Kafka 中的偏移量管理机制&#xff0c;包括当前偏移量与提交偏移量的区别、自动提交与手动提交的使用场景及代码示例。 一、当前偏…

苹果可折叠iPad:2028年的科技盛宴?

苹果公司凭借其持续的创新能力&#xff0c;长期占据着平板电脑市场的主导地位。最近&#xff0c;彭博社记者Mark Gurman爆料称苹果计划在2028年推出可折叠iPad&#xff0c;这一消息迅速引发了科技界的广泛关注。这不仅预示着平板电脑市场即将迎来一场革命&#xff0c;也为苹果未…

使用 Unicorn 调用 android so 中的 JNI 方法

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ Android 示例代码 编写一个 jni 方法 add 进行简单的加法运算 &#xff0c;代码如下&#xff1a; #include <jni.h>// 实现加法运算 extern "C&q…

Vue 3 30天精进之旅:Day 16 - 组合式API进阶

友情提示&#xff1a;本文内容全部由 银河易创&#xff08;https://ai.eaigx.com&#xff09;AI创作平台生成&#xff0c;仅供参考。请根据具体情况和需求进行适当的调整和验证。 欢迎来到“Vue 3 30天精进之旅”的第16天&#xff01;今天我们将深入探讨 组合式API 的进阶用法&…

JVM栈帧中|局部变量表、操作数栈、动态链接各自的任务是什么?

局部变量表和动态链接确实在栈帧中存在&#xff0c;用于存储方法的参数、局部变量和方法的动态链接信息&#xff08;如常量池索引等&#xff09;&#xff0c;但这些并不等同于操作数栈。 让我们理清楚两者之间的区别和它们各自的作用。 &#x1f680; 栈帧和操作数栈的关系 1…