Initial boiler plate project
This commit is contained in:
69
node_modules/next/dist/esm/build/compiler.js
generated
vendored
Normal file
69
node_modules/next/dist/esm/build/compiler.js
generated
vendored
Normal file
@ -0,0 +1,69 @@
|
||||
import { webpack } from "next/dist/compiled/webpack/webpack";
|
||||
function generateStats(result, stat) {
|
||||
const { errors, warnings } = stat.toJson({
|
||||
preset: "errors-warnings",
|
||||
moduleTrace: true
|
||||
});
|
||||
if (errors && errors.length > 0) {
|
||||
result.errors.push(...errors);
|
||||
}
|
||||
if (warnings && warnings.length > 0) {
|
||||
result.warnings.push(...warnings);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// Webpack 5 requires the compiler to be closed (to save caches)
|
||||
// Webpack 4 does not have this close method so in order to be backwards compatible we check if it exists
|
||||
function closeCompiler(compiler) {
|
||||
return new Promise((resolve, reject)=>{
|
||||
// @ts-ignore Close only exists on the compiler in webpack 5
|
||||
return compiler.close((err)=>err ? reject(err) : resolve());
|
||||
});
|
||||
}
|
||||
export function runCompiler(config, { runWebpackSpan, inputFileSystem }) {
|
||||
return new Promise((resolve, reject)=>{
|
||||
const compiler = webpack(config);
|
||||
// Ensure we use the previous inputFileSystem
|
||||
if (inputFileSystem) {
|
||||
compiler.inputFileSystem = inputFileSystem;
|
||||
}
|
||||
compiler.fsStartTime = Date.now();
|
||||
compiler.run((err, stats)=>{
|
||||
const webpackCloseSpan = runWebpackSpan.traceChild("webpack-close", {
|
||||
name: config.name || "unknown"
|
||||
});
|
||||
webpackCloseSpan.traceAsyncFn(()=>closeCompiler(compiler)).then(()=>{
|
||||
if (err) {
|
||||
const reason = err.stack ?? err.toString();
|
||||
if (reason) {
|
||||
return resolve([
|
||||
{
|
||||
errors: [
|
||||
{
|
||||
message: reason,
|
||||
details: err.details
|
||||
}
|
||||
],
|
||||
warnings: [],
|
||||
stats
|
||||
},
|
||||
compiler.inputFileSystem
|
||||
]);
|
||||
}
|
||||
return reject(err);
|
||||
} else if (!stats) throw new Error("No Stats from webpack");
|
||||
const result = webpackCloseSpan.traceChild("webpack-generate-error-stats").traceFn(()=>generateStats({
|
||||
errors: [],
|
||||
warnings: [],
|
||||
stats
|
||||
}, stats));
|
||||
return resolve([
|
||||
result,
|
||||
compiler.inputFileSystem
|
||||
]);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//# sourceMappingURL=compiler.js.map
|
||||
Reference in New Issue
Block a user