close
  • English
  • lib.autoExternal

    Info

    autoExternal is a specific configuration for bundle mode. It will not take effect in bundleless mode (set lib.bundle to false) since deps will not be bundled in bundleless mode.

    • Type:
    type AutoExternal =
      | boolean
      | {
          dependencies?: boolean;
          optionalDependencies?: boolean;
          devDependencies?: boolean;
          peerDependencies?: boolean;
        };
    • Default:
      • true when format is cjs or esm
      • false when format is umd or mf
    • CLI: --auto-external / --no-auto-external

    Whether to automatically externalize dependencies of different dependency types and do not bundle them.

    Object type

    autoExternal.dependencies

    • Type: boolean
    • Default: true

    Whether to automatically externalize dependencies of type dependencies.

    autoExternal.optionalDependencies

    • Type: boolean
    • Default: true

    Whether to automatically externalize dependencies of type optionalDependencies.

    autoExternal.peerDependencies

    • Type: boolean
    • Default: true

    Whether to automatically externalize dependencies of type peerDependencies.

    autoExternal.devDependencies

    • Type: boolean
    • Default: false

    Whether to automatically externalize dependencies of type devDependencies.

    Default value

    The default value of autoExternal is true, which means the following dependency types will not be bundled:

    • dependencies
    • optionalDependencies
    • peerDependencies

    And the following dependency types will be bundled:

    • devDependencies

    This configuration is equivalent to the following object type:

    export default {
      lib: [
        {
          format: 'esm',
          autoExternal: {
            dependencies: true,
            optionalDependencies: true,
            peerDependencies: true,
            devDependencies: false,
          },
        },
      ],
    };

    Example

    Customize externalized dependency types

    To disable the processing of a specific type of dependency, you can configure autoExternal as an object like this:

    rslib.config.ts
    export default {
      lib: [
        {
          format: 'esm',
          autoExternal: {
            dependencies: false,
            peerDependencies: false,
          },
        },
      ],
    };

    Disable default behavior

    If you want to disable the default behavior, you can set autoExternal to false:

    rslib.config.ts
    export default {
      lib: [
        {
          format: 'esm',
          autoExternal: false,
        },
      ],
    };

    For more details about handling third-party dependencies, please refer to Handle Third-party Dependencies.