UNPKG

@roots/bud-minify

Version:

CSS and JS minification for bud.js

199 lines (198 loc) 6.5 kB
import type * as Terser from 'terser'; import type { TerserOptions } from 'terser-webpack-plugin'; import type Plugin from 'terser-webpack-plugin'; import { Extension, type ExtensionApi, type OptionCallback } from '@roots/bud-framework/extension'; /** * JS Minimizer configuration */ interface BudMinimizeJSOptions extends Plugin.BasePluginOptions { exclude: Plugin.BasePluginOptions[`exclude`]; extractComments: Plugin.BasePluginOptions[`extractComments`]; include: Plugin.BasePluginOptions[`include`]; minify: Plugin.MinimizerImplementation<TerserOptions>; parallel: Plugin.BasePluginOptions[`parallel`]; terserOptions: { compress: Terser.CompressOptions; ecma: Terser.ECMA; enclose: boolean | string; format: Terser.FormatOptions; ie8: boolean; keep_classnames: boolean | RegExp; keep_fnames: boolean | RegExp; mangle: boolean | Terser.MangleOptions; module: boolean; nameCache: object; parse: Terser.ParseOptions; safari10: boolean; sourceMap: boolean | Terser.SourceMapOptions; toplevel: boolean; } & TerserOptions; } type BudMinimizeJSPublicInterface = { dropComments: (enable?: boolean) => BudMinimizeJSPublicApi; dropConsole: (enable?: boolean) => BudMinimizeJSPublicApi; dropDebugger: (enable?: boolean) => BudMinimizeJSPublicApi; /** * Mangle output * @deprecated Use {@link BudTerser.set} instead * * @example * ```js * bud.minimize.js.set(`terserOptions.mangle`, {}) * ``` */ mangle: (mangle: OptionCallback<BudMinimizeJSPublicApi['terserOptions'], `mangle`>) => BudMinimizeJSPublicApi; } & ExtensionApi<BudMinimizeJSPublicApi, BudMinimizeJSOptions>; /** * Terser configuration */ declare class BudMinimizeJSPublicApi extends Extension<BudMinimizeJSOptions> implements BudMinimizeJSPublicInterface { /** * Exclude * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#exclude} */ exclude: BudMinimizeJSPublicInterface['exclude']; /** * extractComments value * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#extractcomments} */ extractComments: BudMinimizeJSPublicInterface['extractComments']; /** * Get exclude * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#exclude} */ getExclude: BudMinimizeJSPublicInterface['getExclude']; /** * Get extractComments * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#extractcomments} */ getExtractComments: BudMinimizeJSPublicInterface['getExtractComments']; /** * Get include * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#include} */ getInclude: BudMinimizeJSPublicInterface['getInclude']; /** * Get minify * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#minify} */ getMinify: BudMinimizeJSPublicInterface['getMinify']; /** * Get parallel * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#parallel} */ getParallel: BudMinimizeJSPublicInterface['getParallel']; /** * Get terserOptions * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#terserOptions} */ getTerserOptions: BudMinimizeJSPublicInterface['getTerserOptions']; /** * Set include * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#include} */ include: BudMinimizeJSPublicInterface['include']; /** * Value of {@link Options.minify} * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#minify} */ minify: BudMinimizeJSPublicInterface['minify']; /** * parallel value * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#parallel} */ parallel: BudMinimizeJSPublicInterface['parallel']; /** * Set exclude * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#exclude} */ setExclude: BudMinimizeJSPublicInterface['setExclude']; /** * Set extractComments * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#extractcomments} */ setExtractComments: BudMinimizeJSPublicInterface['setExtractComments']; /** * Set include * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#include} */ setInclude: BudMinimizeJSPublicInterface['setInclude']; /** * Set minify * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#minify} */ setMinify: BudMinimizeJSPublicInterface['setMinify']; /** * Set parallel * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#parallel} */ setParallel: BudMinimizeJSPublicInterface['setParallel']; /** * Set terserOptions * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#terserOptions} */ setTerserOptions: BudMinimizeJSPublicInterface['setTerserOptions']; /** * terserOptions * * @see {@link https://github.com/webpack-contrib/terser-webpack-plugin#terserOptions} */ terserOptions: BudMinimizeJSPublicInterface['terserOptions']; /** * @deprecated Use {@link BudTerser.dropComments} instead */ comments(comments?: boolean): this; /** * @deprecated Use {@link BudTerser.dropDebugger} instead */ debugger(enable?: boolean): this; /** * Drop comments */ dropComments(enable?: boolean): this; /** * Drop console */ dropConsole(enable?: boolean): this; /** * Drop debugger statements */ dropDebugger(enable?: boolean): this; /** * Mangle output * @deprecated Use {@link BudTerser.set} instead * * @example * ```js * bud.minimize.js.set(`terserOptions.mangle`, {}) * ``` */ mangle(mangle: BudMinimizeJSPublicInterface['terserOptions']['mangle']): this; /** * @deprecated Use {@link BudTerser.set} instead * * @example * ```js * bud.minimize.js.set(`terserOptions.minify`, () => {}) * ``` */ setMinifier(minify: any): this; } export { type BudMinimizeJSOptions, BudMinimizeJSPublicApi, type BudMinimizeJSPublicInterface, };