// Note: You must restart bin/webpack-dev-server for changes to take effect console.log('Running in production mode'); // eslint-disable-line no-console // const { join } = require('path'); // const OfflinePlugin = require('@lcdp/offline-plugin'); const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer'); const { merge } = require('webpack-merge'); const sharedConfig = require('./shared'); // const { FE_SUBDIRECTORY } = require(join(__dirname, '..', 'app', 'soapbox', 'build_config')); // const joinPublicPath = (...paths) => join(FE_SUBDIRECTORY, ...paths); module.exports = merge(sharedConfig, { mode: 'production', devtool: 'source-map', stats: 'errors-warnings', bail: true, optimization: { minimize: true, }, plugins: [ // Generates report.html new BundleAnalyzerPlugin({ analyzerMode: 'static', openAnalyzer: false, logLevel: 'silent', }), // new OfflinePlugin({ // caches: { // main: [':rest:'], // additional: [ // ':externals:', // 'packs/images/32-*.png', // used in emoji-mart // 'packs/icons/*.svg', // ], // optional: [ // '**/locale_*.js', // don't fetch every locale; the user only needs one // '**/*_polyfills-*.js', // the user may not need polyfills // '**/*.chunk.js', // only cache chunks when needed // '**/*.chunk.css', // '**/*.woff2', // the user may have system-fonts enabled // // images can be cached on-demand // '**/*.png', // '**/*.svg', // ], // }, // externals: [ // joinPublicPath('packs/emoji/1f602.svg'), // used for emoji picker dropdown // // // Default emoji reacts // joinPublicPath('packs/emoji/1f44d.svg'), // Thumbs up // joinPublicPath('packs/emoji/2764.svg'), // Heart // joinPublicPath('packs/emoji/1f606.svg'), // Laughing // joinPublicPath('packs/emoji/1f62e.svg'), // Surprised // joinPublicPath('packs/emoji/1f622.svg'), // Crying // joinPublicPath('packs/emoji/1f629.svg'), // Weary // joinPublicPath('packs/emoji/1f621.svg'), // Angry (Spinster) // ], // excludes: [ // '**/*.gz', // '**/*.map', // '**/*.LICENSE.txt', // 'stats.json', // 'report.html', // 'instance/**/*', // // any browser that supports ServiceWorker will support woff2 // '**/*.eot', // '**/*.ttf', // '**/*-webfont-*.svg', // '**/*.woff', // // Sounds return a 206 causing sw.js to crash // // https://stackoverflow.com/a/66335638 // '**/*.ogg', // '**/*.oga', // '**/*.mp3', // '404.html', // 'assets-manifest.json', // // It would be nice to serve these, but they bloat up sw.js // 'packs/images/crypto/**/*', // 'packs/emoji/**/*', // ], // ServiceWorker: { // cacheName: 'soapbox', // entry: join(__dirname, '../app/soapbox/service_worker/entry.js'), // minify: true, // }, // cacheMaps: [{ // match: requestUrl => { // const backendRoutes = [ // '/api', // '/pleroma', // '/nodeinfo', // '/socket', // '/oauth', // '/.well-known/webfinger', // '/static', // '/instance', // '/main/ostatus', // '/ostatus_subscribe', // '/pghero', // '/sidekiq', // '/open-source', // ]; // // const isBackendRoute = ({ pathname }) => { // if (pathname) { // return backendRoutes.some(pathname.startsWith); // } else { // return false; // } // }; // // return isBackendRoute(requestUrl) && requestUrl; // }, // requestTypes: ['navigate'], // }], // safeToUseOptionalCaches: true, // appShell: join(FE_SUBDIRECTORY, '/'), // }), ], });