这个页面展示了 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)
TL;DR: “重建”仅在watchmode或developmentmode期间发生。
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