@roots/bud-minify
Version:
CSS and JS minification for bud.js
52 lines (51 loc) • 1.87 kB
JavaScript
import { __decorate } from "tslib";
import { Bud } from '@roots/bud-framework';
import { Extension } from '@roots/bud-framework/extension';
import { dependsOn } from '@roots/bud-framework/extension/decorators/dependsOn';
import { expose } from '@roots/bud-framework/extension/decorators/expose';
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';
/**
* Minimizer configuration
*/
let BudMinimize = class BudMinimize extends Extension {
/**
* {@link Extension.buildBefore}
*/
async buildBefore(bud) {
bud.hooks.on(`build.optimization.minimize`, this.enabled);
}
/**
* {@link Extension.register}
*/
async register(bud) {
bud.set(`minify`, this, false);
this.js = bud.extensions.get(`@roots/bud-minify/minify-js`);
bud.set(`terser`, bud.extensions.get(`@roots/bud-minify/minify-js`));
this.css = bud.extensions.get(`@roots/bud-minify/minify-css`);
bud.set(`minimizeCss`, bud.extensions.get(`@roots/bud-minify/minify-css`));
}
enable(value = true) {
this.enabled = value instanceof Bud ? true : value;
this.logger.log(this.enabled ? `enabled` : `disabled`);
this.app.hooks.on(`build.optimization.minimize`, this.enabled);
return this;
}
};
__decorate([
bind
], BudMinimize.prototype, "buildBefore", null);
__decorate([
bind
], BudMinimize.prototype, "register", null);
__decorate([
bind
], BudMinimize.prototype, "enable", null);
BudMinimize = __decorate([
label(`@roots/bud-minify`),
expose(`minimizers`),
dependsOn([`@roots/bud-minify/minify-css`, `@roots/bud-minify/minify-js`]),
production
], BudMinimize);
export { BudMinimize as default };