保誠-保戶業務員媒合平台
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"use strict";
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = setupWriteToDisk;
 
var _fs = _interopRequireDefault(require("fs"));
 
var _path = _interopRequireDefault(require("path"));
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
function setupWriteToDisk(context) {
  const compilers = context.compiler.compilers || [context.compiler];
 
  for (const compiler of compilers) {
    compiler.hooks.emit.tap("DevMiddleware", compilation => {
      if (compiler.hasWebpackDevMiddlewareAssetEmittedCallback) {
        return;
      }
 
      compiler.hooks.assetEmitted.tapAsync("DevMiddleware", (file, info, callback) => {
        let targetPath = null;
        let content = null; // webpack@5
 
        if (info.compilation) {
          ({
            targetPath,
            content
          } = info);
        } else {
          let targetFile = file;
          const queryStringIdx = targetFile.indexOf("?");
 
          if (queryStringIdx >= 0) {
            targetFile = targetFile.substr(0, queryStringIdx);
          }
 
          let {
            outputPath
          } = compiler;
          outputPath = compilation.getPath(outputPath, {});
          content = info;
          targetPath = _path.default.join(outputPath, targetFile);
        }
 
        const {
          writeToDisk: filter
        } = context.options;
        const allowWrite = filter && typeof filter === "function" ? filter(targetPath) : true;
 
        if (!allowWrite) {
          return callback();
        }
 
        const dir = _path.default.dirname(targetPath);
 
        const name = compiler.options.name ? `Child "${compiler.options.name}": ` : "";
        return _fs.default.mkdir(dir, {
          recursive: true
        }, mkdirError => {
          if (mkdirError) {
            context.logger.error(`${name}Unable to write "${dir}" directory to disk:\n${mkdirError}`);
            return callback(mkdirError);
          }
 
          return _fs.default.writeFile(targetPath, content, writeFileError => {
            if (writeFileError) {
              context.logger.error(`${name}Unable to write "${targetPath}" asset to disk:\n${writeFileError}`);
              return callback(writeFileError);
            }
 
            context.logger.log(`${name}Asset written to disk: "${targetPath}"`);
            return callback();
          });
        });
      });
      compiler.hasWebpackDevMiddlewareAssetEmittedCallback = true;
    });
  }
}