fixing client
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
// WASM Bundle Size Optimization Configuration
|
||||
// Advanced Webpack configuration for smaller WASM bundles
|
||||
|
||||
const path = require('path');
|
||||
|
||||
// Bundle size optimization configuration
|
||||
config.optimization = {
|
||||
...config.optimization,
|
||||
// Enable aggressive tree shaking
|
||||
usedExports: true,
|
||||
sideEffects: false,
|
||||
|
||||
// Split chunks for better caching and smaller initial bundle
|
||||
splitChunks: {
|
||||
chunks: 'all',
|
||||
cacheGroups: {
|
||||
// Separate Skiko (Compose UI) into its own chunk
|
||||
skiko: {
|
||||
test: /[\\/]skiko[\\/]/,
|
||||
name: 'skiko',
|
||||
chunks: 'all',
|
||||
priority: 30,
|
||||
reuseExistingChunk: true,
|
||||
enforce: true
|
||||
},
|
||||
// Separate Ktor client into its own chunk
|
||||
ktor: {
|
||||
test: /[\\/]ktor[\\/]/,
|
||||
name: 'ktor',
|
||||
chunks: 'all',
|
||||
priority: 20,
|
||||
reuseExistingChunk: true
|
||||
},
|
||||
// Separate Kotlin stdlib into its own chunk
|
||||
kotlinStdlib: {
|
||||
test: /[\\/]kotlin[\\/]/,
|
||||
name: 'kotlin-stdlib',
|
||||
chunks: 'all',
|
||||
priority: 15,
|
||||
reuseExistingChunk: true
|
||||
},
|
||||
// Default vendor chunk for remaining dependencies
|
||||
vendor: {
|
||||
test: /[\\/]node_modules[\\/]/,
|
||||
name: 'vendors',
|
||||
chunks: 'all',
|
||||
priority: 10,
|
||||
reuseExistingChunk: true
|
||||
},
|
||||
// Application code chunk
|
||||
default: {
|
||||
name: 'app',
|
||||
minChunks: 2,
|
||||
priority: 5,
|
||||
reuseExistingChunk: true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
// Minimize bundle size
|
||||
minimize: true
|
||||
// Note: minimizer is automatically configured by Kotlin/JS
|
||||
};
|
||||
|
||||
// Performance optimization
|
||||
config.performance = {
|
||||
...config.performance,
|
||||
// Increase hint limits for WASM (which is naturally larger)
|
||||
maxAssetSize: 2000000, // 2MB for individual assets
|
||||
maxEntrypointSize: 2000000, // 2MB for entrypoints
|
||||
hints: 'warning'
|
||||
};
|
||||
|
||||
// Resolve optimization for faster builds
|
||||
config.resolve = {
|
||||
...config.resolve,
|
||||
// Skip looking in these directories to speed up resolution
|
||||
modules: ['node_modules'],
|
||||
// Cache module resolution
|
||||
cache: true
|
||||
};
|
||||
|
||||
// Module optimization
|
||||
config.module = {
|
||||
...config.module,
|
||||
// Disable parsing for known pre-built modules
|
||||
noParse: [
|
||||
/kotlin\.js$/,
|
||||
/kotlinx-.*\.js$/
|
||||
]
|
||||
};
|
||||
|
||||
// Development vs Production optimizations
|
||||
if (config.mode === 'production') {
|
||||
// Production-specific optimizations
|
||||
config.output = {
|
||||
...config.output,
|
||||
// Better file names for caching
|
||||
filename: '[name].[contenthash:8].js',
|
||||
chunkFilename: '[name].[contenthash:8].chunk.js'
|
||||
};
|
||||
|
||||
// Additional production optimizations
|
||||
config.optimization = {
|
||||
...config.optimization,
|
||||
// Enable module concatenation (scope hoisting)
|
||||
concatenateModules: true,
|
||||
// Remove empty chunks
|
||||
removeEmptyChunks: true,
|
||||
// Merge duplicate chunks
|
||||
mergeDuplicateChunks: true
|
||||
};
|
||||
} else {
|
||||
// Development optimizations for faster builds
|
||||
config.cache = {
|
||||
type: 'filesystem',
|
||||
buildDependencies: {
|
||||
config: [__filename]
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user