2024-01-31 15:57:11 -06:00
|
|
|
const {delimiter, join} = require('path');
|
2024-01-11 05:05:16 -06:00
|
|
|
|
2023-11-30 21:41:42 -06:00
|
|
|
const {
|
|
|
|
banner,
|
|
|
|
defaultConfig,
|
|
|
|
webpack,
|
2024-02-03 20:31:35 -06:00
|
|
|
} = require('@flecks/build/src/server');
|
2023-11-30 21:41:42 -06:00
|
|
|
|
|
|
|
const runtime = require('./runtime');
|
|
|
|
const startServer = require('./start');
|
|
|
|
|
2024-01-11 05:05:16 -06:00
|
|
|
const {
|
|
|
|
FLECKS_CORE_ROOT = process.cwd(),
|
|
|
|
} = process.env;
|
|
|
|
|
2023-11-30 21:41:42 -06:00
|
|
|
module.exports = async (env, argv, flecks) => {
|
|
|
|
const {
|
|
|
|
hot,
|
|
|
|
nodeArgs,
|
2024-01-20 03:40:20 -06:00
|
|
|
nodeEnv,
|
2023-11-30 21:41:42 -06:00
|
|
|
start: isStarting,
|
|
|
|
} = flecks.get('@flecks/server');
|
|
|
|
const config = defaultConfig(flecks, {
|
|
|
|
node: {
|
|
|
|
__dirname: false,
|
|
|
|
__filename: false,
|
|
|
|
},
|
|
|
|
output: {
|
|
|
|
libraryTarget: 'commonjs2',
|
2024-01-11 05:05:16 -06:00
|
|
|
path: join(FLECKS_CORE_ROOT, 'dist', 'server'),
|
2023-11-30 21:41:42 -06:00
|
|
|
},
|
|
|
|
plugins: [
|
|
|
|
banner({banner: "require('source-map-support').install();"}),
|
|
|
|
],
|
|
|
|
stats: {
|
|
|
|
...flecks.get('@flecks/server.stats'),
|
|
|
|
warningsFilter: [
|
|
|
|
/Failed to parse source map/,
|
|
|
|
],
|
|
|
|
},
|
|
|
|
target: 'node',
|
|
|
|
});
|
|
|
|
const isProduction = 'production' === argv.mode;
|
|
|
|
// Entrypoints.
|
|
|
|
config.entry.index = [];
|
|
|
|
if (!isProduction && hot) {
|
|
|
|
config.plugins.push(new webpack.HotModuleReplacementPlugin());
|
|
|
|
config.entry.index.push('webpack/hot/signal');
|
|
|
|
}
|
|
|
|
config.entry.index.push('@flecks/server/entry');
|
|
|
|
// Augment the application-starting configuration.
|
|
|
|
if (isStarting) {
|
|
|
|
config.plugins.push(
|
|
|
|
startServer({
|
2024-01-31 15:57:11 -06:00
|
|
|
env: {
|
|
|
|
...nodeEnv,
|
|
|
|
NODE_PATH: flecks.resolver.modules.join(delimiter),
|
|
|
|
NODE_PRESERVE_SYMLINKS: flecks.roots.some(([path, request]) => path !== request) ? 1 : 0,
|
|
|
|
},
|
2023-11-30 21:41:42 -06:00
|
|
|
exec: 'index.js',
|
|
|
|
// Bail hard on unhandled rejections and report.
|
|
|
|
nodeArgs: [...nodeArgs, '--unhandled-rejections=strict', '--trace-uncaught'],
|
|
|
|
// HMR.
|
|
|
|
signal: !!hot,
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
// Build the server runtime.
|
|
|
|
await runtime(config, env, argv, flecks);
|
|
|
|
return config;
|
|
|
|
};
|