Rapport-Laravel/node_modules/webpack-dev-server/lib/utils/routes.js

71 lines
1.8 KiB
JavaScript

'use strict';
const { createReadStream } = require('fs');
const { join } = require('path');
const clientBasePath = join(__dirname, '..', '..', 'client');
function routes(server) {
const app = server.app;
const middleware = server.middleware;
app.get('/__webpack_dev_server__/sockjs.bundle.js', (req, res) => {
res.setHeader('Content-Type', 'application/javascript');
createReadStream(
join(clientBasePath, 'modules/sockjs-client/index.js')
).pipe(res);
});
app.get('/webpack-dev-server/invalidate', (_req, res) => {
server.invalidate();
res.end();
});
app.get('/webpack-dev-server', (req, res) => {
middleware.waitUntilValid((stats) => {
res.setHeader('Content-Type', 'text/html');
res.write(
'<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body>'
);
const statsForPrint =
typeof stats.stats !== 'undefined'
? stats.toJson().children
: [stats.toJson()];
res.write(`<h1>Assets Report:</h1>`);
statsForPrint.forEach((item, index) => {
res.write('<div>');
const name =
item.name || (stats.stats ? `unnamed[${index}]` : 'unnamed');
res.write(`<h2>Compilation: ${name}</h2>`);
res.write('<ul>');
const publicPath = item.publicPath === 'auto' ? '' : item.publicPath;
for (const asset of item.assets) {
const assetName = asset.name;
const assetURL = `${publicPath}${assetName}`;
res.write(
`<li>
<strong><a href="${assetURL}" target="_blank">${assetName}</a></strong>
</li>`
);
}
res.write('</ul>');
res.write('</div>');
});
res.end('</body></html>');
});
});
}
module.exports = routes;