let File = require('../File'); let path = require('path'); class MockEntryPlugin { /** * @param {import('../Mix')} mix */ constructor(mix) { // TODO: Remove in Mix 7 -- Here for backwards compat if a plugin requires this file this.mix = mix || global.Mix; } /** * Handle the deletion of the temporary mix.js * output file that was generated by webpack. * * This file is created when the user hasn't * requested any JavaScript compilation, but * webpack still requires an entry. * * @param {import("webpack").Compiler} compiler */ apply(compiler) { compiler.hooks.done.tap('MockEntryPlugin', stats => { const assets = stats.toJson().assets || []; const temporaryOutputFile = assets.find(asset => asset.name === 'mix.js'); if (!temporaryOutputFile) { return; } delete stats.compilation.assets[temporaryOutputFile.name]; File.find( path.resolve(this.mix.config.publicPath, temporaryOutputFile.name) ).delete(); }); } } module.exports = MockEntryPlugin;