build(server): switch to esbuild (#701)

This commit is contained in:
Trim21
2023-12-12 01:15:11 +08:00
committed by GitHub
parent b9680f191f
commit 2098c2e3f1
5 changed files with 502 additions and 182 deletions
+16 -3
View File
@@ -9,6 +9,8 @@ process.on('unhandledRejection', (err) => {
throw err;
});
const path = require('path');
const esbuild = require('esbuild');
const chalk = require('chalk');
const fs = require('fs-extra');
const webpack = require('webpack');
@@ -16,7 +18,6 @@ const checkRequiredFiles = require('react-dev-utils/checkRequiredFiles');
const FileSizeReporter = require('react-dev-utils/FileSizeReporter');
const paths = require('../shared/config/paths');
const clientConfig = require('../client/config/webpack.config.prod');
const serverConfig = require('../server/config/webpack.config.prod');
const {measureFileSizesBeforeBuild, printFileSizesAfterBuild} = FileSizeReporter;
@@ -37,10 +38,22 @@ const copyPublicFolder = () => {
};
// Create the production build and print the deployment instructions.
const build = (previousFileSizes) => {
const build = async (previousFileSizes) => {
console.log('Creating an optimized production build...');
console.log('building server...');
const compiler = webpack([clientConfig, serverConfig]);
await esbuild.build({
entryPoints: [path.resolve(__dirname, '..', 'server/bin/start.ts')],
outfile: path.resolve(__dirname, '..', 'dist/index.js'),
platform: 'node',
target: 'node12',
bundle: true,
external: ['geoip-country'],
sourcemap: 'inline',
});
console.log('building client...');
const compiler = webpack([clientConfig]);
return new Promise((resolve, reject) => {
compiler.run((err, stats) => {
if (err) {