如何在命令行的每次调用中使用 Webpack 进行增量构建?
Posted
技术标签:
【中文标题】如何在命令行的每次调用中使用 Webpack 进行增量构建?【英文标题】:How to do incremental builds with Webpack, across each invocation from the command line? 【发布时间】:2017-07-29 11:51:48 【问题描述】:当我从命令行运行webpack
时,它只是从头开始构建所有内容。我们如何让 Webpack 在调用 webpack
CLI 时进行增量构建,以便它只解析和转译已更改的文件?
我希望此功能在每次调用 webpack
时都能正常工作,而无需长时间运行。
webpack --watch
和 webpack-dev-server
不是选项,因为它们一直在运行,这是我不想要的。
例如,我想运行webpack
,然后它会退出,然后下次我运行webpack
时,我希望它聪明一点,不要重新构建所有内容,只需重新构建更改的文件。
【问题讨论】:
有谁知道这是否可行?似乎是一个老问题,但我无法在任何地方找到解决方案。如果是这样,在这篇文章中包含它会很棒,因为这是我解决这个问题的第一篇 *** 文章。 Vite 旨在解决这个问题。 vitejs.dev @Robert Vite 是基于 Webpack 构建的吗? @trusktr 它是基于 Rollup 构建的 【参考方案1】:我强烈推荐 webpack --watch。 “当使用监视模式时,webpack 会为编译过程中使用的所有文件安装文件监视程序。如果检测到任何更改,它将再次运行编译。启用缓存后,webpack 将每个模块保留在内存中并重复使用不改的话。”
https://webpack.github.io/docs/tutorials/getting-started/【讨论】:
感谢您的回答。我的要求是没有进程在运行,但是监视模式让 webpack 运行。我只需要运行webpack
,然后下次运行webpack
时,我希望它不要重新进行完整构建。
这似乎是 webpack 的选项问题:github.com/webpack/webpack/issues/250【参考方案2】:
这是关于 webpack 1.x 但对于 2.x 应该是一样的:
Build Performance > Incremental Build:
确保您没有进行完全重建。 Webpack 有一个很棒的缓存层,它允许你将已经编译的模块保存在内存中。有一些工具可以帮助使用它:
webpack-dev-server
:从内存中提供所有 webpack 资产。最佳性能。webpack-dev-middleware
:与高级用户的 webpack-dev-server 性能相同。webpack –watch
或watch: true
:缓存内容但将资产写入磁盘。表现不错。
他们没有在 2.x 的文档中明确提及增量构建,但他们仍然在 Command Line Interface (CLI) 中提及缓存。
【讨论】:
感谢您的回答。我的要求是没有进程在运行。我想运行webpack
,它会退出,然后下次我运行webpack
它不会进行完全重建。 webpack-dev-server
和 webpack –watch
让进程继续运行。 webpack-dev-middleware
呢?我们可以使用webpack-dev-middleware
在不离开正在运行的进程的情况下进行增量构建吗?以上是关于如何在命令行的每次调用中使用 Webpack 进行增量构建?的主要内容,如果未能解决你的问题,请参考以下文章
Webpack实战:webpack-dev-server的介绍与用法