@roots/bud-minify
Version:
CSS and JS minification for bud.js
199 lines (198 loc) • 6.5 kB
TypeScript
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, };