i18n: Upgrade translations from crowdin (253f51dd). (docs)
[ProtonMail-WebClient.git] / applications / pass-desktop / webpack.renderer.config.js
blob994f70a1cf74bc2754cb59e2bddc172b865bc790
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;
11 const env = {};
13 const options = {
14 isProduction,
15 isRelease,
16 publicPath: env.publicPath || '/',
17 api: env.api,
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',
24 buildData: {
25 version: env.version,
26 commit: env.commit,
27 branch: env.branch,
28 date: env.date,
29 mode: env.appMode,
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} */
40 module.exports = {
41 target: `browserslist:${options.browserslist}`,
42 mode: isProduction ? 'production' : 'development',
43 bail: isProduction,
44 devtool: isProduction ? 'source-map' : 'cheap-module-source-map',
45 watchOptions: {
46 ignored: /dist|node_modules|locales|\.(gif|jpeg|jpg|ico|png|svg)/,
47 aggregateTimeout: 600,
49 resolve: {
50 extensions: ['.js', '.tsx', '.ts'],
51 fallback: {
52 crypto: false,
53 buffer: false,
54 stream: false,
55 iconv: false,
56 path: false,
57 punycode: false,
59 alias: {
60 'proton-pass-web': path.resolve(__dirname, '../pass/src/'),
63 module: {
64 strictExportPresence: true,
65 rules: [
66 ...getJsLoaders({ ...options, hasReactRefresh: false }),
67 ...getCssLoaders({ browserslist: undefined, logical: false }),
68 ...getAssetsLoaders(),
71 plugins: [
72 ...plugins,
73 new ReactRefreshWebpackPlugin(),
74 new MiniCssExtractPlugin({
75 filename: 'styles/[name].css',
76 }),
78 experiments: {
79 asyncWebAssembly: true,