| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const CachedInputFileSystem = require("enhanced-resolve/lib/CachedInputFileSystem");const fs = require("graceful-fs");const createConsoleLogger = require("../logging/createConsoleLogger");const NodeWatchFileSystem = require("./NodeWatchFileSystem");const nodeConsole = require("./nodeConsole");/** @typedef {import("../../declarations/WebpackOptions").InfrastructureLogging} InfrastructureLogging *//** @typedef {import("../Compiler")} Compiler */class NodeEnvironmentPlugin {	/**	 * @param {Object} options options	 * @param {InfrastructureLogging} options.infrastructureLogging infrastructure logging options	 */	constructor(options) {		this.options = options;	}	/**	 * Apply the plugin	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 */	apply(compiler) {		const { infrastructureLogging } = this.options;		compiler.infrastructureLogger = createConsoleLogger({			level: infrastructureLogging.level || "info",			debug: infrastructureLogging.debug || false,			console:				infrastructureLogging.console ||				nodeConsole({					colors: infrastructureLogging.colors,					appendOnly: infrastructureLogging.appendOnly,					stream: infrastructureLogging.stream				})		});		compiler.inputFileSystem = new CachedInputFileSystem(fs, 60000);		const inputFileSystem = compiler.inputFileSystem;		compiler.outputFileSystem = fs;		compiler.intermediateFileSystem = fs;		compiler.watchFileSystem = new NodeWatchFileSystem(			compiler.inputFileSystem		);		compiler.hooks.beforeRun.tap("NodeEnvironmentPlugin", compiler => {			if (compiler.inputFileSystem === inputFileSystem) {				compiler.fsStartTime = Date.now();				inputFileSystem.purge();			}		});	}}module.exports = NodeEnvironmentPlugin;
 |