84 lines
3.0 KiB
JavaScript
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)
|
|
}
|