pixelfed/pixelfed

View on GitHub
webpack.mix.js

Summary

Maintainability
A
2 hrs
Test Coverage
let mix = require('laravel-mix');
const fs = require("fs");
const path = require("path");

mix.before(() => {
    fs.rmSync('public/css', { recursive: true, force: true });
    fs.rmSync('public/js', { recursive: true, force: true });
});


mix.sass('resources/assets/sass/app.scss', 'public/css')
.sass('resources/assets/sass/appdark.scss', 'public/css')
.sass('resources/assets/sass/admin.scss', 'public/css')
.sass('resources/assets/sass/portfolio.scss', 'public/css')
.sass('resources/assets/sass/spa.scss', 'public/css')
.sass('resources/assets/sass/landing.scss', 'public/css').version();

mix.js('resources/assets/js/app.js', 'public/js')
.js('resources/assets/js/activity.js', 'public/js')
.js('resources/assets/js/components.js', 'public/js')
.js('resources/assets/js/discover.js', 'public/js')
.js('resources/assets/js/profile.js', 'public/js')
.js('resources/assets/js/status.js', 'public/js')
.js('resources/assets/js/timeline.js', 'public/js')
.js('resources/assets/js/compose.js', 'public/js')
.js('resources/assets/js/compose-classic.js', 'public/js')
.js('resources/assets/js/search.js', 'public/js')
.js('resources/assets/js/developers.js', 'public/js')
.js('resources/assets/js/hashtag.js', 'public/js')
.js('resources/assets/js/collectioncompose.js', 'public/js')
.js('resources/assets/js/collections.js', 'public/js')
.js('resources/assets/js/profile-directory.js', 'public/js')
.js('resources/assets/js/story-compose.js', 'public/js')
.js('resources/assets/js/direct.js', 'public/js')
.js('resources/assets/js/admin.js', 'public/js')
.js('resources/assets/js/spa.js', 'public/js')
.js('resources/assets/js/stories.js', 'public/js')
.js('resources/assets/js/portfolio.js', 'public/js')
.js('resources/assets/js/account-import.js', 'public/js')
.js('resources/assets/js/admin_invite.js', 'public/js')
.js('resources/assets/js/landing.js', 'public/js')
.js('resources/assets/js/remote_auth.js', 'public/js')
.vue({ version: 2 });

mix.extract();
mix.version();

const TerserPlugin = require('terser-webpack-plugin');

mix.options({
    processCssUrls: false,
    terser: {
        parallel: true,
        terserOptions: {
            compress: true,
            output: {
                comments: false
            }
        }
    }
})
mix.alias({
    '@': path.join(__dirname, 'resources/assets/components'),
    '~': path.join(__dirname, 'resources/assets/js/components'),
});
mix.webpackConfig({
    optimization: {
        providedExports: false,
        sideEffects: false,
        usedExports: false,
        minimize: true,
        minimizer: [ new TerserPlugin({
            extractComments: false,
        })]
    },
    output: {
        chunkFilename: 'js/[name].[chunkhash].js',
    }
});
mix.autoload({
    jquery: ['$', 'jQuery', 'window.jQuery']
});