61 lines
1.3 KiB
TypeScript
61 lines
1.3 KiB
TypeScript
import CopyWebpackPlugin from 'copy-webpack-plugin';
|
|
import path from 'path';
|
|
import { EnvironmentPlugin } from 'webpack';
|
|
|
|
import { PRODUCTION_URL } from './src/config.ts';
|
|
|
|
// GitHub workflow uses an empty string as the default value if it's not in repository variables, so we cannot define a default value here
|
|
process.env.BASE_URL = process.env.BASE_URL || PRODUCTION_URL;
|
|
|
|
const {
|
|
APP_ENV = 'production',
|
|
BASE_URL,
|
|
} = process.env;
|
|
|
|
export default {
|
|
mode: 'production',
|
|
|
|
target: 'node',
|
|
|
|
entry: {
|
|
electron: './src/electron/main.ts',
|
|
preload: './src/electron/preload.ts',
|
|
},
|
|
|
|
output: {
|
|
filename: '[name].cjs',
|
|
path: path.resolve(__dirname, 'dist'),
|
|
},
|
|
|
|
resolve: {
|
|
extensions: ['.js', '.cjs', '.mjs', '.ts', '.tsx'],
|
|
},
|
|
|
|
plugins: [
|
|
new EnvironmentPlugin({
|
|
APP_ENV,
|
|
BASE_URL,
|
|
IS_PREVIEW: false,
|
|
}),
|
|
new CopyWebpackPlugin({
|
|
patterns: [
|
|
{
|
|
from: path.resolve(__dirname, 'node_modules/electron-drag-click/build/Release/electron_drag_click.node'),
|
|
to: path.resolve(__dirname, 'build/Release/electron_drag_click.node'),
|
|
},
|
|
],
|
|
}),
|
|
],
|
|
|
|
module: {
|
|
rules: [{
|
|
test: /\.(ts|tsx|js|mjs|cjs)$/,
|
|
loader: 'babel-loader',
|
|
exclude: /node_modules/,
|
|
}],
|
|
},
|
|
externals: {
|
|
electron: 'require("electron")',
|
|
},
|
|
};
|