Skip to content

Instantly share code, notes, and snippets.

@josecanhelp
Created May 17, 2018 16:50
Show Gist options
  • Save josecanhelp/38bffa6e0e6290b5ee704fdc9f3eb734 to your computer and use it in GitHub Desktop.
Save josecanhelp/38bffa6e0e6290b5ee704fdc9f3eb734 to your computer and use it in GitHub Desktop.
JoseSoto.com Mix-Webpack Config
let mix = require('laravel-mix');
let build = require('./tasks/build.js');
let tailwindcss = require('tailwindcss');
let glob = require("glob-all");
let PurgecssPlugin = require("purgecss-webpack-plugin");
const CopyWebpackPlugin = require('copy-webpack-plugin');
const ImageminPlugin = require('imagemin-webpack-plugin').default;
const imageminMozjpeg = require('imagemin-mozjpeg');
class TailwindExtractor {
static extract(content) {
return content.match(/[A-z0-9-:\/]+/g) || [];
}
}
mix.disableSuccessNotifications();
mix.setPublicPath('source/assets/');
mix.webpackConfig({
plugins: [
build.jigsaw,
build.browserSync(),
build.watch(['source/**/*.md', 'source/**/*.php', 'source/**/*.less']),
new CopyWebpackPlugin([{
from: 'source/_assets/img',
to: 'img',
}]),
new ImageminPlugin({
test: /\.(jpe?g|png|gif|svg)$/i,
plugins: [
imageminMozjpeg({
quality: 80,
})
]
}),
]
});
mix.js('source/_assets/js/main.js', 'js')
.less('source/_assets/less/main.less', 'css')
.options({
postCss: [
tailwindcss('./tailwind.js'),
]
})
.version();
if (mix.inProduction()) {
mix.webpackConfig({
plugins: [
new PurgecssPlugin({
paths: glob.sync([
path.join(__dirname, "source/_layouts/*.blade.php"),
path.join(__dirname, "source/_partials/*.blade.php"),
path.join(__dirname, "source/_posts/*.blade.php"),
path.join(__dirname, "source/*.blade.php")
]),
extractors: [
{
extractor: TailwindExtractor,
extensions: ["html", "js", "php"]
}
]
})
]
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment