meldestelle/client/web-app/webpack.config.d/test-optimization.js
2025-08-24 21:31:31 +02:00

84 lines
3.0 KiB
JavaScript

// Test-specific webpack optimization configuration
// This reduces warnings for test bundles which naturally include more dependencies
// Only apply test optimizations for test builds
if (config.name && config.name.includes('test')) {
// Relax performance budgets for test builds
config.performance = {
hints: false, // Disable size warnings for tests
maxAssetSize: 15000000, // 15MB for test bundles
maxEntrypointSize: 15000000,
assetFilter: function(assetFilename) {
return false; // Don't check test files
}
};
// Test-specific optimizations
config.optimization = {
...config.optimization,
// Less aggressive splitting for tests (faster build)
splitChunks: {
chunks: 'all',
minSize: 100000, // 100KB minimum for test chunks
maxSize: 2000000, // 2MB max size for test chunks
cacheGroups: {
// Single vendor chunk for all dependencies
testVendors: {
test: /[\\/]node_modules[\\/]/,
name: 'test-vendors',
chunks: 'all',
enforce: true,
priority: 20
},
// Single chunk for all Kotlin libraries
testKotlin: {
test: /kotlin/,
name: 'test-kotlin',
chunks: 'all',
enforce: true,
priority: 10
},
// Default test chunk
testDefault: {
name: 'test-common',
minChunks: 2,
chunks: 'all',
priority: 5
}
}
},
// Disable some optimizations for faster test builds
minimize: false, // Don't minify test bundles
concatenateModules: false // Disable for faster builds
};
// Test-specific webpack optimization applied (silent)
} else {
// For production builds, apply stricter size limits for non-test files
if (config.mode === 'production') {
// Override performance settings for production
config.performance = config.performance || {};
config.performance.hints = 'error'; // Make size violations errors in production
}
}
// Additional test environment detection
const isTestEnvironment = process.env.NODE_ENV === 'test' ||
process.env.KARMA_ENV === 'true' ||
config.target === 'web' && config.mode === 'development';
if (isTestEnvironment) {
// Disable source maps for test builds to reduce size
config.devtool = false;
// Optimize for faster compilation rather than smaller bundles
config.optimization = config.optimization || {};
config.optimization.removeAvailableModules = false;
config.optimization.removeEmptyChunks = false;
config.optimization.splitChunks = false; // Disable splitting for tests
// Fast test build configuration applied (silent)
}