UNPKG

@roots/bud-minify

Version:

CSS and JS minification for bud.js

36 lines (35 loc) 1.49 kB
import { __decorate } from "tslib"; import { Extension } from '@roots/bud-framework/extension'; import { label } from '@roots/bud-framework/extension/decorators/label'; import { production } from '@roots/bud-framework/extension/decorators/production'; import { bind } from '@roots/bud-support/decorators/bind'; import { BudMinimizeCSSPublicApi, } from './extension.config.js'; /** * Css minimizer */ let BudMinimizeCSS = class BudMinimizeCSS extends BudMinimizeCSSPublicApi { /** * {@link Extension.buildBefore} */ async buildBefore({ extensions, hooks, module }) { const { default: Minimizer, esbuildMinify, lightningCssMinify, swcMinify, } = await module.import(`css-minimizer-webpack-plugin`, import.meta.url, { raw: true }); if (!this.minify && extensions.has(`@roots/bud-swc`)) this.setMinify(() => swcMinify); if (!this.minify && extensions.has(`@roots/bud-esbuild`)) this.setMinify(() => esbuildMinify); if (!this.minify) this.setMinify(() => lightningCssMinify); hooks.on(`build.optimization.minimizer`, (minimizers = []) => [ ...minimizers.filter(minimizer => !(minimizer instanceof Minimizer)), new Minimizer({ ...this.options }), ]); } }; __decorate([ bind ], BudMinimizeCSS.prototype, "buildBefore", null); BudMinimizeCSS = __decorate([ label(`@roots/bud-minify/minify-css`), production ], BudMinimizeCSS); export default BudMinimizeCSS;