1 const path
= require('path');
2 const plugins
= require('./webpack.plugins');
3 const getCssLoaders
= require('@proton/pack/webpack/css.loader');
4 const getAssetsLoaders
= require('@proton/pack/webpack/assets.loader');
5 const { getJsLoaders
} = require('@proton/pack/webpack/js.loader');
6 const MiniCssExtractPlugin
= require('mini-css-extract-plugin');
7 const ReactRefreshWebpackPlugin
= require('@pmmmwh/react-refresh-webpack-plugin');
9 const isProduction
= process
.env
.NODE_ENV
=== 'production';
10 const isRelease
= !!process
.env
.CI_COMMIT_TAG
;
16 publicPath
: env
.publicPath
|| '/',
18 appMode
: env
.appMode
|| 'standalone',
19 featureFlags
: env
.featureFlags
|| '',
20 writeSRI
: env
.writeSri
!== 'false',
21 browserslist
: isProduction
22 ? `> 0.5%, not IE 11, Firefox ESR, Safari 14, iOS 14`
23 : 'last 1 chrome version, last 1 firefox version, last 1 safari version',
31 warningLogs
: env
.warningLogs
|| false,
32 errorLogs
: env
.errorLogs
|| false,
33 overlayWarnings
: env
.overlayWarnings
|| false,
34 overlayErrors
: env
.overlayErrors
|| false,
35 overlayRuntimeErrors
: env
.overlayRuntimeErrors
|| false,
36 logical
: env
.logical
|| false,
39 /** @type {import('webpack').Configuration} */
41 target
: `browserslist:${options.browserslist}`,
42 mode
: isProduction
? 'production' : 'development',
44 devtool
: isProduction
? 'source-map' : 'cheap-module-source-map',
46 ignored
: /dist|node_modules|locales|\.(gif|jpeg|jpg|ico|png|svg)/,
47 aggregateTimeout
: 600,
50 extensions
: ['.js', '.tsx', '.ts'],
60 'proton-pass-web': path
.resolve(__dirname
, '../pass/src/'),
64 strictExportPresence
: true,
66 ...getJsLoaders({ ...options
, hasReactRefresh
: false }),
67 ...getCssLoaders({ browserslist
: undefined, logical
: false }),
68 ...getAssetsLoaders(),
73 new ReactRefreshWebpackPlugin(),
74 new MiniCssExtractPlugin({
75 filename
: 'styles/[name].css',
79 asyncWebAssembly
: true,