在 Webpack 的 cacheGroups 配置中,你可以使用 test 字段来匹配需要包含的模块,但如果你想排除某些模块,你可以使用 exclude 字段。以下是一个示例配置,演示如何在 cacheGroups 中排除特定的依赖:

module.exports = {
  // 其他配置项...
  optimization: {
    splitChunks: {
      cacheGroups: {
        vendor: {
          test(module) {
            const path = module.resource || ''
            const include = ['node_modules']
            const exclude = [
              'react-dom',
              'react-native-web',
              'native-base',
              '@react-navigation',
              'expo-image',
              '@react-aria',
              'react-native-reanimated'
            ]
            const excludeMatch = exclude.some(v => path.includes(v))
            const includeMatch = include.some(v => path.includes(v))
            return includeMatch && !excludeMatch
          },
          name: 'vendor',
          chunks: 'all'
        }
      }
    }
  }
}

上述代码 test 函数中我们定义了两个数组 include 和 exclude。include 中匹配的内容将会被打包到 vendor.js 中,exclude 匹配的内容将不会被打包到 vendor.js 中。

通过这种方式,你可以排除特定的依赖模块,只包含你希望打包的模块,以满足你的项目需求。根据实际情况,你可以修改数组和条件来排除不需要的依赖。

已有 2 条评论

  1. 为什么要排除'react-dom',

    'react-native-web', 'native-base', '@react-navigation', 'expo-image', '@react-aria', 'react-native-reanimated'呢
    1. @i

      非 web 项目,特殊需求

发表评论