UNPKG

@roots/bud-minify

Version:

CSS and JS minification for bud.js

38 lines (37 loc) 1.5 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 { 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;