Это кажется простым, но без показа фактического кода, это лучшее, что я могу вам дать:
var fs = require('fs'); // or fs-extra, which is usually the better choice
var path = require('path');
var compiler = require('your compiler thing');
const generatedOutputPath = 'whatever/your/dest/dir/is';
app.get('/yourshouldknowthisurl.js', (req, res) => {
let filenameIn = getFileNameForURL(req.url);
let filenameOut = generateAnOutputFilename();
let wpConf = {
entry: filenameIn,
output: {
path: generatedOutputPath,
filename: filenameOut
},
// and any other webpack config options.
};
// I'm assuming your compile invokes webpack
compiler.compile(wpConf, (err,result) => {
if (err) return sendError(err, res);
fs.readFile(path.resolve(generatedOutputPath,filenameOut), (err, data) => {
if (err) return sendError(err, res);
// Return the actual bundle. Don't return "a url" when the browser
// requested a javascript file by url. It should get JS code back.
res.send(data);
});
});
});
В этом getFileNameForURL
преобразует входящий URL вимя файлаКак вы делаете это ваше дело.То же самое касается generateAnOutputFilename
, как вы реализуете «генерацию уникального имени файла», зависит только от вас.
Я бы, вероятно, даже рекомендовал бы вообще не писать файл и вместо этого сообщать о веб-пакетедля генерации вывода в память, поэтому вам не нужно записывать, а затем читать с диска.«Как это сделать» описано в документации веб-пакета.