lib.autoExternal

INFO

autoExternal 是 bundle 模式的特定配置。在 bundleless 模式(将 lib.bundle 设置为 false)下不会生效,因为 bundleless 模式下依赖不会被打包。

  • 类型:
type AutoExternal =
  | boolean
  | {
      dependencies?: boolean;
      optionalDependencies?: boolean;
      devDependencies?: boolean;
      peerDependencies?: boolean;
    };
  • 默认值:
    • formatcjsesm 时为 true
    • formatumdmf 时为 false

是否自动对不同依赖类型的依赖进行外部化处理,不将其打包。

对象类型

autoExternal.dependencies

  • 类型: boolean
  • 默认值: true

是否自动外部化 dependencies 类型的依赖。

autoExternal.optionalDependencies

  • 类型: boolean
  • 默认值: true

是否自动外部化 optionalDependencies 类型的依赖。

autoExternal.peerDependencies

  • 类型: boolean
  • 默认值: true

是否自动外部化 peerDependencies 类型的依赖。

autoExternal.devDependencies

  • 类型: boolean
  • 默认值: false

是否自动外部化 devDependencies 类型的依赖。

默认值

autoExternal 的默认值为 true,意味着以下依赖类型不会被打包

  • dependencies
  • optionalDependencies
  • peerDependencies

而以下依赖类型会被打包

  • devDependencies

此配置等同于下面的对象类型:

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

示例

自定义外部化的依赖类型

要禁用特定类型依赖的处理,你可以将 autoExternal 配置为一个对象,如下所示:

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

禁用默认行为

如果你想禁用默认行为,可以将 autoExternal 设置为 false

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

关于第三方依赖处理的更多细节,请参考 处理第三方依赖