admin/seed/config/webpack/electron.js
2025-05-14 21:42:26 +02:00

70 lines
1.9 KiB
JavaScript

// const nodeExternals = require('webpack-node-externals');
const merge = require('webpack-merge');
const WebpackBar = require('webpackbar');
// local
const HTMLWebpackPlugin = require('html-webpack-plugin');
const parts = require('./parts');
const commonConfig = require('./common');
const paths = require('.././paths');
// Forces webpack-dev-server program to write bundle files to the file system.
const createConfig = config =>
merge([
parts.clean(paths.defaultBuild, paths.baseDir),
{
name: 'electron',
entry: {
main: [paths.main],
},
target: 'electron-main',
// node: { __dirname: false },
// in prod we need the packages
node: {
// tell webpack that we actually want a working __dirname value
// (ref: https://webpack.js.org/configuration/node/#node-__dirname)
__dirname: false,
__filename: false,
},
output: {
path: paths.defaultBuild,
filename: 'main.js',
publicPath: './',
},
},
// investigate why adding prod true destory ssr in prod
parts.loadJavaScript(),
// need css loader to not fail building
parts.loadCSS(),
parts.setVariables({
__DEV__: !config.prod,
__STAGING__: config.staging || false,
__ELECTRON__: true,
__TEST__: false,
__BROWSER__: false,
__SSR__: false,
}),
{
plugins: [
new HTMLWebpackPlugin({
template: paths.inAppSrc('index.html'),
}),
new WebpackBar({
name: 'Electron',
color: 'orange',
}),
],
},
]);
module.exports = env => {
const mode = env && env.prod ? 'production' : 'development';
const config = createConfig({
...env,
});
// need common (images, font) to not fail the building process
// mode : Possible values for mode are: none, development or production(default).
return merge({ mode }, commonConfig, config);
};