webpack 在哪里缓存其重建工作?

Ale*_*502 2 webpack babeljs

这个页面展示了 webpack 的很多编译模式,其中一些重建速度比构建速度快。

在此输入图像描述

我正在尝试测量不同构建工具的速度,但我无法弄清楚我是在构建还是重建。我的意思是..我必须清除哪些文件才能确保正在重建?只是目标目录吗?或者某个地方还有另一个缓存?

例如,这里的第二次构建是第二次构建还是重建?

node_modules/.bin/webpack --output-path ~/target
rm -r target
node_modules/.bin/webpack --output-path ~/target
Run Code Online (Sandbox Code Playgroud)

如果重建,我必须清除什么才能使其再次重建

这里的第二个是建造还是重建

node_modules/.bin/webpack --output-path ~/target
node_modules/.bin/webpack --output-path ~/target
Run Code Online (Sandbox Code Playgroud)

如果这是另一个构建,我需要做什么来重建

(网络包4)

Der*_*yen 6

TL;DR: “重建”仅在watchmodedevelopmentmode期间发生。

网页包

Webpack 似乎不会缓存到文件,而只是缓存在内存中。

缓存

缓存生成的 webpack 模块和块以提高构建速度。当处于监视模式并且 webpack 设置为开发模式时,缓存将默认自动启用。

Webpack 文档 | 缓存选项

由于默认情况下它仅在开发和监视模式下启用,因此您的每个命令都应该是全新的构建。您可以关闭此cache选项以确保,或者专门针对production

node_modules/.bin/webpack --output-path ~/target --mode=production
Run Code Online (Sandbox Code Playgroud)

在检查了 webpack 5 中的新更改后,我遇到了这个问题,其中之一是允许缓存到本地文件

cache:对象已删除:无法再设置内存缓存对象

cache.type补充:现在可以在“内存”和“文件系统”之间进行选择

我认为这意味着目前在 webpack 4 中不可能在文件系统中拥有缓存。


编辑:您在问题中没有提及,但我刚才看到您babel在赏金的推理中提到了。

巴别塔

如果您使用babel-loader,则有一个默认cacheDirectory选项。false但是,如果启用,默认目录位于node_modules/.cache/babel-loader.

这是文档中有关它的片段,重点是我的:

cacheDirectory: 默认 false。设置后,给定目录将用于缓存加载程序的结果。未来的 webpack 构建将尝试从缓存中读取,以避免每次运行时都需要运行可能昂贵的 Babel 重新编译过程。如果在 options 中将该值设置为 true ({cacheDirectory: true}),则加载程序将使用默认的缓存目录,或者如果在任何根目录中都找不到文件夹,node_modules/.cache/babel-loader则回退到默认的操作系统临时文件目录。node_modules

babel-loader 选项