setupOutputFileSystem.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. "use strict";
  2. const memfs = require("memfs");
  3. /** @typedef {import("webpack").MultiCompiler} MultiCompiler */
  4. /** @typedef {import("../index.js").IncomingMessage} IncomingMessage */
  5. /** @typedef {import("../index.js").ServerResponse} ServerResponse */
  6. /**
  7. * @template {IncomingMessage} Request
  8. * @template {ServerResponse} Response
  9. * @param {import("../index.js").Context<Request, Response>} context
  10. */
  11. function setupOutputFileSystem(context) {
  12. let outputFileSystem;
  13. if (context.options.outputFileSystem) {
  14. const {
  15. outputFileSystem: outputFileSystemFromOptions
  16. } = context.options;
  17. outputFileSystem = outputFileSystemFromOptions;
  18. } else {
  19. outputFileSystem = memfs.createFsFromVolume(new memfs.Volume());
  20. }
  21. const compilers = /** @type {MultiCompiler} */
  22. context.compiler.compilers || [context.compiler];
  23. for (const compiler of compilers) {
  24. compiler.outputFileSystem = outputFileSystem;
  25. }
  26. // @ts-ignore
  27. // eslint-disable-next-line no-param-reassign
  28. context.outputFileSystem = outputFileSystem;
  29. }
  30. module.exports = setupOutputFileSystem;