@roots/bud-minify
Version:
CSS and JS minification for bud.js
38 lines (37 loc) • 1.5 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 { BudMinimizeJSPublicApi, } from './extension.config.js';
/**
* JS minimizer configuration
*/
let BudMinimizeJS = class BudMinimizeJS extends BudMinimizeJSPublicApi {
/**
* {@link Extension.buildBefore}
*/
async buildBefore({ extensions, hooks, module }) {
const { default: Minimizer, esbuildMinify, swcMinify, terserMinify, } = await module.import(`terser-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(() => terserMinify);
hooks.on(`build.optimization.minimizer`, (minimizers = []) => [
...minimizers.filter(minimizer => !(minimizer instanceof Minimizer)),
new Minimizer({ ...this.options }),
]);
}
};
__decorate([
bind
], BudMinimizeJS.prototype, "buildBefore", null);
BudMinimizeJS = __decorate([
label(`@roots/bud-minify/minify-js`),
production
], BudMinimizeJS);
export default BudMinimizeJS;