yalc.lock 更改时使 Webpack 的 node_modules 缓存无效

Invalidate Webpack's node_modules cache when yalc.lock changes

我有两个项目:App 和 Library。应用依赖于库。我正在同时处理这两个问题,使用 yalc 这样当我更新库时,它会更新 App/node-modules/Library.

不幸的是,Webpack 积极缓存 node_modules,它不会获取对 App/node-modules/Library 的更改。重新加载应用程序无济于事,甚至杀死手表并重新启动它,因为它会将缓存保留在文件系统中。我在某处读到,对 package-lock.jsonyarn.lock 的更改会使它们无效,但 yalc 有自己单独的锁定文件。

什么有效:

什么不起作用:

有什么方法可以配置 Webpack,以便在 yalc.lock 发生变化时使 node_modules 的缓存失效?

在这种情况下,您需要做的就是每当您对库进行更改并使用 yalc 发布它时,您还需要在 package.json.[=26= 中更改其 version ]

如果您在每个 yalc publish --pushyalc push 上保持库的版本相同,无论您在库中更改什么,或者使用完全不同的功能进行更新,都不会反映出来直到你重新启动你的服务器。它将继续使用这些缓存内存。

Webpack 在其 package.json 中查找每个依赖项的版本,如果找到相同的版本,无论您在内部更改了什么,它都会使用缓存的资产进行构建。您会在导入的依赖项中找到更新的内容,但不会有更改。

您必须更改包版本,以便 Webpack 可以跟踪更改并有效地使用缓存资源。包版本的更改将导致在不重新启动服务器的情况下使用更新代码的依赖项。

这是 Webpack 提高构建速度以尽可能快地为应用程序提供服务的方法之一。如果您在您的应用中使用任何带有 YALC、YARN 或 NPM 的本地包或库,请确保您还在每次发布时更新其版本


Change version along with your library changes while the publishing library is the only sophisticated way so far.

要了解更多信息,您可以查看 Webpack 如何使用依赖图来构建模块。