File: /home/thehunarfound/public_html/DMS/node_modules/laravel-mix/src/builder/webpack-plugins.js
let webpack = require('webpack');
let FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
let MockEntryPlugin = require('../plugins/MockEntryPlugin');
let MixDefinitionsPlugin = require('../plugins/MixDefinitionsPlugin');
let BuildCallbackPlugin = require('../plugins/BuildCallbackPlugin');
let CustomTasksPlugin = require('../plugins/CustomTasksPlugin');
let ManifestPlugin = require('../plugins/ManifestPlugin');
let WebpackChunkHashPlugin = require('webpack-chunk-hash');
let UglifyJSPlugin = require('uglifyjs-webpack-plugin');
module.exports = function () {
let plugins = [];
// Activate better error feedback in the console.
plugins.push(
new FriendlyErrorsWebpackPlugin({ clearConsole: Config.clearConsole })
);
// Activate Webpack autoloading support.
plugins.push(
new webpack.ProvidePlugin(Config.autoload)
);
// Add support for webpack 3 scope hoisting.
if (Mix.inProduction()) {
plugins.push(
new webpack.optimize.ModuleConcatenationPlugin()
);
}
// Activate support for Mix_ .env definitions.
plugins.push(
MixDefinitionsPlugin.build({
NODE_ENV: Mix.inProduction()
? 'production'
: (process.env.NODE_ENV || 'development')
})
);
// Add automatic CSS Purification support.
if (Mix.isUsing('purifyCss')) {
let CssPurifierPlugin = require('../plugins/CssPurifierPlugin');
plugins.push(CssPurifierPlugin.build());
}
// Activate OS notifications for each compile.
if (Mix.isUsing('notifications')) {
let WebpackNotifierPlugin = require('webpack-notifier');
plugins.push(
new WebpackNotifierPlugin({
title: 'Laravel Mix',
alwaysNotify: Config.notifications.onSuccess,
contentImage: Mix.paths.root('node_modules/laravel-mix/icons/laravel.png')
})
);
}
// Add support for browser reloading with BrowserSync.
if (Mix.isUsing('browserSync')) {
let BrowserSyncPlugin = require('browser-sync-webpack-plugin');
plugins.push(
new BrowserSyncPlugin(
Object.assign({
host: 'localhost',
port: 3000,
proxy: 'app.dev',
files: [
'app/**/*.php',
'resources/views/**/*.php',
'public/js/**/*.js',
'public/css/**/*.css'
],
snippetOptions: {
rule: {
match: /(<\/body>|<\/pre>)/i,
fn: function (snippet, match) {
return snippet + match;
}
}
}
}, Config.browserSync),
{ reload: false }
)
);
}
// If the user didn't declare any JS compilation, we still need to
// use a temporary script to force a compile. This plugin will
// handle the process of deleting the compiled script.
if (! Config.js.length) {
plugins.push(new MockEntryPlugin);
}
// Activate the appropriate Webpack versioning plugin, based on the environment.
if (Mix.isUsing('versioning')) {
plugins.push(
new webpack[Mix.inProduction() ? 'HashedModuleIdsPlugin': 'NamedModulesPlugin'](),
new WebpackChunkHashPlugin()
);
} else if (Mix.isUsing('hmr')) {
plugins.push(
new webpack.NamedModulesPlugin()
);
}
// Add some general Webpack loader options.
plugins.push(new webpack.LoaderOptionsPlugin({
minimize: Mix.inProduction(),
options: {
context: __dirname,
output: { path: './' }
}
}));
// If we're in production environment, with Uglification turned on, we'll
// clean up and minify all of the user's JS and CSS automatically.
if (Mix.inProduction() && Config.uglify) {
plugins.push(
new UglifyJSPlugin(Config.uglify)
);
}
if (Config.preprocessors.fastSass && Config.preprocessors.fastSass.length) {
plugins.push(
new (require('../plugins/FastSassPlugin'))(Config.preprocessors.fastSass)
);
}
// Handle all custom, non-webpack tasks.
plugins.push(
new ManifestPlugin()
);
// Handle all custom, non-webpack tasks.
plugins.push(
new CustomTasksPlugin()
);
// Notify the rest of our app when Webpack has finished its build.
plugins.push(
new BuildCallbackPlugin(stats => Mix.dispatch('build', stats))
);
return plugins;
};
;;