diff --git a/packages/commonjs/src/index.js b/packages/commonjs/src/index.js index ef3976f3b..1a6abfc37 100644 --- a/packages/commonjs/src/index.js +++ b/packages/commonjs/src/index.js @@ -47,6 +47,7 @@ export default function commonjs(options = {}) { ignoreGlobal, ignoreDynamicRequires, requireReturnsDefault: requireReturnsDefaultOption, + defaultIsModuleExports: defaultIsModuleExportsOption, esmExternals } = options; const getRequireReturnsDefault = @@ -60,8 +61,11 @@ export default function commonjs(options = {}) { : Array.isArray(esmExternals) ? ((esmExternalIds = new Set(esmExternals)), (id) => esmExternalIds.has(id)) : () => esmExternals; - const defaultIsModuleExports = - typeof options.defaultIsModuleExports === 'boolean' ? options.defaultIsModuleExports : 'auto'; + const getDefaultIsModuleExports = + typeof defaultIsModuleExportsOption === 'function' + ? defaultIsModuleExportsOption + : () => + typeof defaultIsModuleExportsOption === 'boolean' ? defaultIsModuleExportsOption : 'auto'; const { dynamicRequireModuleSet, dynamicRequireModuleDirPaths } = getDynamicRequirePaths( options.dynamicRequireTargets @@ -150,7 +154,7 @@ export default function commonjs(options = {}) { disableWrap, commonDir, ast, - defaultIsModuleExports + getDefaultIsModuleExports(id) ); } diff --git a/packages/commonjs/types/index.d.ts b/packages/commonjs/types/index.d.ts index 2b0b06797..350d54328 100644 --- a/packages/commonjs/types/index.d.ts +++ b/packages/commonjs/types/index.d.ts @@ -2,6 +2,7 @@ import { FilterPattern } from '@rollup/pluginutils'; import { Plugin } from 'rollup'; type RequireReturnsDefaultOption = boolean | 'auto' | 'preferred' | 'namespace'; +type DefaultIsModuleExportsOption = boolean | 'auto'; interface RollupCommonJSOptions { /** @@ -161,6 +162,13 @@ interface RollupCommonJSOptions { requireReturnsDefault?: | RequireReturnsDefaultOption | ((id: string) => RequireReturnsDefaultOption); + + /** + * @default "auto" + */ + defaultIsModuleExports?: + | DefaultIsModuleExportsOption + | ((id: string) => DefaultIsModuleExportsOption); /** * Some modules contain dynamic `require` calls, or require modules that * contain circular dependencies, which are not handled well by static