如何在命令行的每次调用中使用 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 --watchwebpack-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 –watchwatch: true:缓存内容但将资产写入磁盘。表现不错。

他们没有在 2.x 的文档中明确提及增量构建,但他们仍然在 Command Line Interface (CLI) 中提及缓存。

【讨论】:

感谢您的回答。我的要求是没有进程在运行。我想运行webpack,它会退出,然后下次我运行webpack 它不会进行完全重建。 webpack-dev-serverwebpack –watch 让进程继续运行。 webpack-dev-middleware 呢?我们可以使用webpack-dev-middleware 在不离开正在运行的进程的情况下进行增量构建吗?

以上是关于如何在命令行的每次调用中使用 Webpack 进行增量构建?的主要内容,如果未能解决你的问题,请参考以下文章

Webpack实战:webpack-dev-server的介绍与用法

实现webpack的实时打包构建

在程序中使用命令行的方式来调用py文件

QT中QProcess调用命令行的痛苦经历

wpf程序调用cmd命令行的方法(C#语言调用C++写的程序)?

如何使用 webpack 捆绑 puppeteer 进行生产部署?