tools.swc

  • Type:
type ToolsSwc =
  | Rspack.SwcLoaderOptions
  | ((config: Rspack.SwcLoaderOptions) => Rspack.SwcLoaderOptions | undefined);
  • Default:
const defaultOptions = {
  jsc: {
    externalHelpers: true,
    parser: {
      tsx: false,
      syntax: 'typescript',
      decorators: true,
    },
  },
  experimental: {
    cacheRoot: './node_modules/.cache/.swc',
    keepImportAttributes: true,
  },
  isModule: 'unknown',
  env: {
    // Read the browserslist configuration of the project
    targets: browserslist,
  },
  // ...some other conditional options
};

You can set the options of builtin:swc-loader through tools.swc.

Refer to Configure SWC for more details.

Object type

tools.swc can be configured as an object, this object will be deeply merged with the built-in builtin:swc-loader option.

export default {
  tools: {
    swc: {
      jsc: {
        externalHelpers: false,
      },
    },
  },
};

Function type

tools.swc can also be configured as a function, this function takes one argument, which is the built-in builtin:swc-loader option. You can modify this object then return a new config. For example:

export default {
  tools: {
    swc: (config) => {
      config.jsc ||= {};
      config.jsc.externalHelpers = false;
      return config;
    },
  },
};
TIP

The object returned by the tools.swc function will be used directly as the final builtin:swc-loader option, and will not be merged with the built-in builtin:swc-loader option anymore.