laravel-mix
Version:
The power of webpack, distilled for the rest of us.
42 lines (35 loc) • 1.18 kB
JavaScript
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;