在 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 中。
通过这种方式,你可以排除特定的依赖模块,只包含你希望打包的模块,以满足你的项目需求。根据实际情况,你可以修改数组和条件来排除不需要的依赖。
为什么要排除'react-dom',
'react-native-web', 'native-base', '@react-navigation', 'expo-image', '@react-aria', 'react-native-reanimated'呢非 web 项目,特殊需求