我正在尝试缓存我的node_modules,并且它有效。问题是,当我尝试 npm 链接 node_modules 中的某个文件夹时,它只是忽略更改,因为它已经缓存了。
所以我想排除单个文件夹,可能使用正则表达式,但经过几个小时的谷歌搜索和阅读文档后,我只是不知道如何做。
问题: 当我更改链接文件夹时,应用程序不会显示更改,因为它已缓存。如果
cache
设置为 false
,则重新加载需要很长时间。
期待
能够从 webpack 的缓存中排除单个文件夹,并且仍然缓存其余的 node_modules。 (我尝试过在
immutablePaths
或 managedPaths
中使用正则表达式)
这是我的 module.exports 对象:
{
...commonConfig.reactBundleConfig,
...{
mode: 'development',
watch: true,
watchOptions: {
ignored: ['ignored paths'],
followSymlinks: true
},
cache: {
type: 'filesystem'
},
devtool: 'source-map'
}
}
您可以使用下一个设置从缓存中排除模块:
snapshot: {
// https://github.com/webpack/webpack/issues/11952
managedPaths: [/^(.+?[\\/]node_modules)[\\/]((?!your-module-name)).*[\\/]*/],
}
我想我得到了一些东西。您应该看看
cache.buildDependencies
选项。
引自github页面:
这是一个新的配置选项cache.buildDependency,它允许指定构建过程的代码依赖关系。为了让事情变得更容易,webpack 负责解析和跟踪指定值的依赖关系。
有两种可能的值类型:文件和目录。 目录必须以斜杠结尾。其他所有内容都作为文件解析。
所以我认为如果你将
buildDependencies
选项添加到缓存配置中,你可以向其中添加一些目录,以便 webpack 知道它需要这些目录来构建。
当您设置的目录中的任何内容发生更改时,它应该会使持久缓存失效。
我还没有测试过,但我认为它应该看起来像这样:
cache: {
type: 'filesystem',
buildDependencies: {
config: [__filename],
excludeThisThing: ["./node_modules/exclude/this/from/caching/"],
},
},
我只是设置
cache: false
,直到完成对 node_modules
的任何潜在更改。
最初重新启动我的 webpack-dev-server 后,我不再需要重新启动我的 webpack 服务器来查看我的 node_modules 中文件的更改。