Webpack - 从缓存中排除 node_modules 的单个文件夹

问题描述 投票:0回答:3

我正在尝试缓存我的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'
  }
}
webpack webpack-5
3个回答
2
投票

您可以使用下一个设置从缓存中排除模块:

snapshot: {
  // https://github.com/webpack/webpack/issues/11952
  managedPaths: [/^(.+?[\\/]node_modules)[\\/]((?!your-module-name)).*[\\/]*/],
}

0
投票

我想我得到了一些东西。您应该看看

cache.buildDependencies
选项。

引自github页面

这是一个新的配置选项cache.buildDependency,它允许指定构建过程的代码依赖关系。为了让事情变得更容易,webpack 负责解析和跟踪指定值的依赖关系。

有两种可能的值类型:文件和目录。 目录必须以斜杠结尾。其他所有内容都作为文件解析。

所以我认为如果你将

buildDependencies
选项添加到缓存配置中,你可以向其中添加一些目录,以便 webpack 知道它需要这些目录来构建。

当您设置的目录中的任何内容发生更改时,它应该会使持久缓存失效。

我还没有测试过,但我认为它应该看起来像这样:

cache: {
  type: 'filesystem',
  buildDependencies: {
    config: [__filename],
    excludeThisThing: ["./node_modules/exclude/this/from/caching/"],
  },
},

0
投票

我只是设置

cache: false
,直到完成对
node_modules
的任何潜在更改。

最初重新启动我的 webpack-dev-server 后,我不再需要重新启动我的 webpack 服务器来查看我的 node_modules 中文件的更改。

© www.soinside.com 2019 - 2024. All rights reserved.