此页面显示了许多Webpack的编译模式,其中有些 rebuild 比 build 快。
我正在尝试测量各种构建工具的速度,但是我无法确定是构建还是重建。我的意思是..我必须清除哪些文件以确保正在重建?只是目标目录?还是在某个地方有另一个缓存?
例如,这里的第二个构建是第二个构建还是重新构建?
node_modules/.bin/webpack --output-path ~/target
rm -r target
node_modules/.bin/webpack --output-path ~/target
如果 rebuilds ,我必须清除些什么才能使其再次 build ?
,这里的第二个是 build 还是 rebuild ?
node_modules/.bin/webpack --output-path ~/target
node_modules/.bin/webpack --output-path ~/target
如果这是另一个 build ,我该怎么做 rebuild ?
(webpack 4)
答案 0 :(得分:0)
TL; DR:“重建”仅在watch
mode或development
mode期间发生。
Webpack似乎不缓存到文件,而仅缓存在内存中。
缓存
缓存生成的Webpack模块和块以提高构建速度。在监视模式下,默认情况下将自动启用缓存,并且webpack设置为模式开发。
由于默认情况下仅在开发和监视模式下启用它,因此每个命令都应重新构建。您可以确定关闭cache
这个选项,也可以专门针对production
:
node_modules/.bin/webpack --output-path ~/target --mode=production
在检查了Webpack 5中的新更改之后,我立即遇到了这个问题,其中之一是对allow caching to a local file的更改。
cache
:对象已删除:无法再设置为内存缓存对象
cache.type
已添加:现在可以在“内存”和“文件系统”之间进行选择
我认为这意味着当前在webpack 4中不可能在文件系统中具有缓存。
编辑:您没有在问题中提及它,但我刚才看到您在赏金理由中提到了babel
。
如果您使用babel-loader
,默认情况下会有一个cacheDirectory
的{{1}}选项。但是,如果启用,则默认目录位于false
中。
以下是文档中的摘要,重点是我的:
node_modules/.cache/babel-loader
:默认为false。设置后,给定目录将用于缓存加载程序的结果。 未来的Webpack构建将尝试从缓存中读取数据,以避免每次运行时都可能运行可能耗资巨大的Babel重新编译过程。如果在选项cacheDirectory
中将该值设置为true,则加载程序将使用({cacheDirectory: true})
中的默认缓存目录,如果在node_modules/.cache/babel-loader
中找不到node_modules
文件夹,则加载器将使用默认的操作系统临时文件目录。任何根目录。