Something went wrong. Try again.
Bluesky app fork with some witchin' additions 💫 forked from jollywhoppers.com/witchsky.app
Something went wrong. Try again.
witchsky.app webpack.config.js
3.1 kB · 89 lines
JavaScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990const createExpoWebpackConfigAsync = require('@expo/webpack-config')const {withAlias} = require('@expo/webpack-config/addons')const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin')const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer')const {sentryWebpackPlugin} = require('@sentry/webpack-plugin')const {version} = require('./package.json')
const GENERATE_STATS = process.env.EXPO_PUBLIC_GENERATE_STATS === '1'const OPEN_ANALYZER = process.env.EXPO_PUBLIC_OPEN_ANALYZER === '1'
const reactNativeWebWebviewConfiguration = { test: /postMock.html$/, use: { loader: 'file-loader', options: { name: '[name].[ext]', }, },}
module.exports = async function (env, argv) { env.babel = { dangerouslyAddModulePathsToTranspile: ['@bsky.app/expo'], } let config = await createExpoWebpackConfigAsync(env, argv) config = withAlias(config, { 'react-native$': 'react-native-web', 'react-native-webview': 'react-native-web-webview', // Force ESM version 'unicode-segmenter/grapheme': require .resolve('unicode-segmenter/grapheme') .replace(/\.cjs$/, '.js'), 'react-native-gesture-handler': false, // RNGH should not be used on web, so let's cause a build error if it sneaks in '@sentry-internal/replay': false, // not used, ~300kb of dead weight }) config.module.rules = [ ...(config.module.rules || []), reactNativeWebWebviewConfiguration, ] if (env.mode === 'development') { config.plugins.push(new ReactRefreshWebpackPlugin()) config.devServer = config.devServer || {} config.devServer.historyApiFallback = { ...(config.devServer.historyApiFallback || {}), // Handles like `xan.lol` contain dots, which the default history // fallback treats as asset requests instead of app routes. disableDotRule: true, } // Reap zombie HMR WebSocket connections that linger after refresh. // Without this, dead sockets exhaust the browser's per-origin connection // pool and the dev server stops responding. config.devServer.onListening = devServer => { devServer.server.on('connection', socket => { socket.setTimeout(10000) socket.on('timeout', () => socket.destroy()) }) } } else { // Support static CDN for chunks config.output.publicPath = 'auto' }
if (GENERATE_STATS || OPEN_ANALYZER) { config.plugins.push( new BundleAnalyzerPlugin({ openAnalyzer: OPEN_ANALYZER, generateStatsFile: true, statsFilename: '../stats.json', analyzerMode: OPEN_ANALYZER ? 'server' : 'json', defaultSizes: 'parsed', }), ) } if (process.env.SENTRY_AUTH_TOKEN) { config.plugins.push( sentryWebpackPlugin({ org: 'blueskyweb', project: 'app', authToken: process.env.SENTRY_AUTH_TOKEN, release: { // fallback needed for Render.com deployments name: process.env.SENTRY_RELEASE || version, dist: process.env.SENTRY_DIST, }, }), ) } return config}