backstory/frontend/craco.config.js

61 lines
1.8 KiB
JavaScript

module.exports = {
devServer: {
server: {
type: 'https',
// options: {
// cert: '/path/to/cert.pem',
// key: '/path/to/key.pem',
// }
},
setupMiddlewares: (middlewares, devServer) => {
const { createProxyMiddleware } = require('http-proxy-middleware');
if (!devServer) {
throw new Error('webpack-dev-server is not defined');
}
devServer.app.use(
'/api',
createProxyMiddleware({
target: 'https://backstory:8911',
changeOrigin: true,
secure: false,
buffer: false,
proxyTimeout: 3600000,
onProxyRes: function (proxyRes, req, res) {
proxyRes.headers['cache-control'] = 'no-cache';
if (
req.url.includes('/docs') ||
req.url.includes('/redoc') ||
req.url.includes('/openapi.json')
) {
return; // Let original headers pass through
}
// Remove any header that might cause buffering
proxyRes.headers['transfer-encoding'] = 'chunked';
delete proxyRes.headers['content-length'];
// Set proper streaming headers
proxyRes.headers['cache-control'] = 'no-cache';
proxyRes.headers['content-type'] = 'text/event-stream';
proxyRes.headers['connection'] = 'keep-alive';
},
})
);
return middlewares;
}
},
webpack: {
configure: (webpackConfig) => {
webpackConfig.devtool = 'source-map';
// Add .ts and .tsx to resolve.extensions
webpackConfig.resolve.extensions = [...webpackConfig.resolve.extensions, '.ts', '.tsx'];
// Ignore source map warnings for node_modules
webpackConfig.ignoreWarnings = [/Failed to parse source map/];
return webpackConfig;
},
},
};