forked from signalapp/Signal-Desktop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack-preload.config.ts
80 lines (72 loc) · 1.72 KB
/
webpack-preload.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Copyright 2019-2020 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { resolve } from 'path';
// eslint-disable-next-line import/no-extraneous-dependencies
import { Configuration } from 'webpack';
import TerserPlugin = require('terser-webpack-plugin');
const context = __dirname;
const { NODE_ENV: mode = 'development' } = process.env;
const EXTERNAL_MODULE = new Set([
'@signalapp/signal-client',
'backbone',
'better-sqlite3',
'ffi-napi',
'fs-xattr',
'fsevents',
'got',
'jquery',
'mac-screen-capture-permissions',
'node-fetch',
'node-sass',
'pino',
'proxy-agent',
'ref-array-napi',
'ref-napi',
'ringrtc',
'sharp',
'websocket',
'zkgroup',
// Uses fast-glob and dynamic requires
'./preload_test',
// Needs to exports `electronRequire`
'./ts/CI',
]);
const preloadConfig: Configuration = {
context,
mode: mode as Configuration['mode'],
devtool: mode === 'development' ? 'inline-source-map' : false,
entry: ['./preload.js'],
// Stack-traces have to be readable so don't mangle function names.
optimization: {
minimizer: [
new TerserPlugin({
parallel: true,
terserOptions: {
mangle: false,
keep_classnames: true,
keep_fnames: true,
},
}),
],
},
target: 'electron-preload',
output: {
path: resolve(context),
filename: 'preload.bundle.js',
publicPath: './',
},
resolve: {
extensions: ['.js'],
alias: {},
mainFields: ['browser', 'main'],
},
externals: [
({ request = '' }, callback) => {
if (EXTERNAL_MODULE.has(request)) {
return callback(undefined, `commonjs2 ${request}`);
}
callback();
},
],
};
export default [preloadConfig];