var Encore = require('@symfony/webpack-encore'); var glob = require('glob-all'); var path = require('path'); var PurgecssPlugin = require('purgecss-webpack-plugin'); class TailwindExtractor { static extract(content) { return content.match(/[A-z0-9-:\/]+/g); } } Encore.cleanupOutputBeforeBuild() .setOutputPath('source/build/') .setPublicPath('/build') .enableLessLoader() .addEntry('js/site', './assets/js/main.js') .addStyleEntry('css/site', './assets/less/main.less') .enablePostCssLoader(function(options) { options.config = { path: 'postcss.config.js' }; }) .enableSourceMaps(!Encore.isProduction()); if (Encore.isProduction()) { Encore.addPlugin( new PurgecssPlugin({ paths: glob.sync([ path.join(__dirname, "output_*/**/*.html"), ]), extractors: [ { extractor: TailwindExtractor, extensions: ['twig', 'html', 'md'] } ] }) ); } module.exports = Encore.getWebpackConfig();