12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- "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;
- });
- }
- }
|