@roots/bud-minify
Version:
CSS and JS minification for bud.js
36 lines (35 loc) • 1.49 kB
JavaScript
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;