SwcJsMinimizerRspackPlugin

Rspack only

This plugin can be used to compress JS assets. See optimization.minimizer.

module.exports = {
  // ...
  optimization: {
    minimizer: [new rspack.SwcJsMinimizerRspackPlugin(options)],
  },
};
  • options

    • Type:

    For details of each options, please visit here.

    type SwcJsMinimizerRspackPluginOptions = {
      test?: AssetConditions;
      exclude?: AssetConditions;
      include?: AssetConditions;
      extractComments?: boolean | RegExp;
      minimizerOptions?: {
        minify?: boolean;
        compress?: TerserCompressOptions | boolean;
        mangle?: TerserMangleOptions | boolean;
        module?: boolean;
        format?: JsFormatOptions & ToSnakeCaseProperties<JsFormatOptions>;
      };
    };
    
    type AssetCondition = string | RegExp;
    type AssetConditions = AssetCondition | AssetCondition[];
    
    interface JsFormatOptions {
      /**
       * Currently noop.
       * @default false
       * @alias ascii_only
       */
      asciiOnly?: boolean;
      /**
       * Currently noop.
       * @default false
       */
      beautify?: boolean;
      /**
       * Currently noop.
       * @default false
       */
      braces?: boolean;
      /**
       * - `false`: removes all comments
       * - `'some'`: preserves some comments
       * - `'all'`: preserves all comments
       * @default false
       */
      comments?: false | 'some' | 'all';
      /**
       * Currently noop.
       * @default 5
       */
      ecma?: TerserEcmaVersion;
      /**
       * Currently noop.
       * @alias indent_level
       */
      indentLevel?: number;
      /**
       * Currently noop.
       * @alias indent_start
       */
      indentStart?: number;
      /**
       * Currently noop.
       * @alias inline_script
       */
      inlineScript?: number;
      /**
       * Currently noop.
       * @alias keep_numbers
       */
      keepNumbers?: number;
      /**
       * Currently noop.
       * @alias keep_quoted_props
       */
      keepQuotedProps?: boolean;
      /**
       * Currently noop.
       * @alias max_line_len
       */
      maxLineLen?: number | false;
      /**
       * Currently noop.
       */
      preamble?: string;
      /**
       * Currently noop.
       * @alias quote_keys
       */
      quoteKeys?: boolean;
      /**
       * Currently noop.
       * @alias quote_style
       */
      quoteStyle?: boolean;
      /**
       * Currently noop.
       * @alias preserve_annotations
       */
      preserveAnnotations?: boolean;
      /**
       * Currently noop.
       */
      safari10?: boolean;
      /**
       * Currently noop.
       */
      semicolons?: boolean;
      /**
       * Currently noop.
       */
      shebang?: boolean;
      /**
       * Currently noop.
       */
      webkit?: boolean;
      /**
       * Currently noop.
       * @alias wrap_iife
       */
      wrapIife?: boolean;
      /**
       * Currently noop.
       * @alias wrap_func_args
       */
      wrapFuncArgs?: boolean;
    }
    
    type TerserEcmaVersion = 5 | 2015 | 2016 | string | number;
    interface TerserCompressOptions {
      arguments?: boolean;
      arrows?: boolean;
      booleans?: boolean;
      booleans_as_integers?: boolean;
      collapse_vars?: boolean;
      comparisons?: boolean;
      computed_props?: boolean;
      conditionals?: boolean;
      dead_code?: boolean;
      defaults?: boolean;
      directives?: boolean;
      drop_console?: boolean;
      drop_debugger?: boolean;
      ecma?: TerserEcmaVersion;
      evaluate?: boolean;
      expression?: boolean;
      global_defs?: any;
      hoist_funs?: boolean;
      hoist_props?: boolean;
      hoist_vars?: boolean;
      ie8?: boolean;
      if_return?: boolean;
      inline?: 0 | 1 | 2 | 3;
      join_vars?: boolean;
      keep_classnames?: boolean;
      keep_fargs?: boolean;
      keep_fnames?: boolean;
      keep_infinity?: boolean;
      loops?: boolean;
      negate_iife?: boolean;
      passes?: number;
      properties?: boolean;
      pure_getters?: any;
      pure_funcs?: string[];
      reduce_funcs?: boolean;
      reduce_vars?: boolean;
      sequences?: any;
      side_effects?: boolean;
      switches?: boolean;
      top_retain?: any;
      toplevel?: any;
      typeofs?: boolean;
      unsafe?: boolean;
      unsafe_passes?: boolean;
      unsafe_arrows?: boolean;
      unsafe_comps?: boolean;
      unsafe_function?: boolean;
      unsafe_math?: boolean;
      unsafe_symbols?: boolean;
      unsafe_methods?: boolean;
      unsafe_proto?: boolean;
      unsafe_regexp?: boolean;
      unsafe_undefined?: boolean;
      unused?: boolean;
      const_to_let?: boolean;
      module?: boolean;
    }
    interface TerserMangleOptions {
      props?: TerserManglePropertiesOptions;
      toplevel?: boolean;
      keep_classnames?: boolean;
      keep_fnames?: boolean;
      keep_private_props?: boolean;
      ie8?: boolean;
      safari10?: boolean;
      reserved?: string[];
    }
    interface TerserManglePropertiesOptions {}